1

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

在此处输入图像描述

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

主要形式有

IsMdiContainer = 假

通过添加子表单

var f = new ChildForm(); 
clientPanel.Controls.Add(f); 
f.TopLevel = false; 
f.BringToFront(); 
f.Show(); 

我不认为使用 IsMdiContainer = true 是一种选择。我不记得为什么,因为它是很久以前的事了,但我认为存在无法隐藏表单边框的问题,这是我需要的。

4

1 回答 1

4

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

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

出问题的不仅是它,表单也失去了被激活的能力。由于子控件没有激活状态,因此只有顶层窗口有。所以它不再正确地绘制标题,它总是使用“未激活”颜色绘制,即使您将焦点设置到表单。另一个严重的问题是拖动标题栏功能仍然有效,允许用户将窗口移到父窗口之外,而无法返回。

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

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

于 2012-12-16T17:02:55.407 回答