如何从窗体中移除控制框

本文关键字:控制 窗体 | 更新日期: 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。

  1. 创建父表单,不设置IsMdiContainer
  2. 为父窗体添加一个面板,命名为ContainerPanel,并设置其Dock属性为fill。
  3. 创建子窗体,并将其添加到无边框样式,无控制框样式,填充坞样式和非顶部样式的面板。

下面是示例代码:

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窗口的各个方面。例如,您可以使用菜单来显示打开的窗口列表,使用工具条来关闭窗口。