如何从窗体中移除控制框
本文关键字:控制 窗体 | 更新日期: 2023-09-27 18:09:08
当我在MDIparent
中加载子窗体时,控制框也出现了。我想移除控制框和子窗体的边框。同时,我将代码写成
private void Form_mainMenu_Load(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Maximized;
this.ControlBox = false;
this.FormBorderStyle = FormBorderStyle.None;
}
如果你真的想自定义mdicchild窗口标题栏的外观,似乎你需要通过处理WM_NCPAINT
消息来处理子窗口的非客户端区域的绘画。您还需要处理WM_SETCURSOR
, WM_MOUSEMOVE
, WM_NCLBUTTONDOWN
, ... .等消息
作为一种变通方法,你可以使用面板来代替mdiParent。
- 创建父表单,不设置
IsMdiContainer
。 - 为父窗体添加一个面板,命名为ContainerPanel,并设置其
Dock
属性为fill。 - 创建子窗体,并将其添加到无边框样式,无控制框样式,填充坞样式和非顶部样式的面板。
下面是示例代码:
var f = new ChildForm();
f.TopLevel = false;
f.ControlBox = false;
f.Dock = DockStyle.Fill;
f.BorderStyle = System.Windows.Forms.BorderStyle.None;
/*I assume this code is in your ParentForm and so 'this' points to ParentForm that contains ContainerPanel*/
this.ContainerPanel.Controls.Add(f);
f.Show();
使用这种方法,您可以控制您的手工制作的mdi窗口的各个方面。例如,您可以使用菜单来显示打开的窗口列表,使用工具条来关闭窗口。