儿童形式标题栏的视觉风格与主要形式不同

时间:2012-12-16 12:29:11

标签: c# winforms windows-7 titlebar

我在主表单中添加了几个子表单。在XP中,似乎父/子的标题栏是相同的,除了关闭按钮是黑色,而不是红色。但是在Windows 7中,如图所示,子表单标题栏与主表单不同。

enter image description here

如何解决这个问题? 最重要的是颜色。但是想了解这里颜色和风格的全部限制。

主要表格有

  

IsMdiContainer = false

通过

添加子表单
var f = new ChildForm(); 
clientPanel.Controls.Add(f); 
f.TopLevel = false; 
f.BringToFront(); 
f.Show(); 

我不认为使用IsMdiContainer = true是一种选择。我不记得为什么在很久以前,但是认为有一个问题是无法隐藏我需要的表格边框。

1 个答案:

答案 0 :(得分:3)

这是完全正常的。将Form.TopLevel属性设置为false时,窗口停止的行为类似于顶级窗口。它变成了一个子控件,行为几乎与UserControl无法区分。除了您忘记更改FormBorderStyle属性外,它仍然打开了“我想要一个标题”和“我想要一个可调整大小的边框”样式标记。

哪个Windows将根据要求呈现,但不再使用顶层窗口的视觉样式。后背是经典外观。

这不是唯一出错的形式,表格也失去了被激活的能力。由于子控件没有激活状态,因此只有顶层窗口。因此,它不再适当地绘制标题,即使您将焦点设置为表单,它也将始终使用“未激活”颜色进行绘制。另一个严重的问题是拖动标题栏功能仍然有效,允许用户将窗口移动到父窗口之外,无法再回到它。

唯一合理的解决方案是将FormBorderStyle设置为None,这样就不会出错。

如果您打算创建自己的MDI样式窗口模型但没有MDI丑陋,那么这不是一个好的解决方案。看看对接库,Weifenluo的免费DockPanel套房很受欢迎。