在我的应用程序中,当我将表单作为主MDI父表单的子表单时,子表单停止在表单后面显示Windows 7默认阴影效果。如何让儿童表格阴影显示?
Form obj = Application.OpenForms["My_form"];
if (obj != null)
{
obj.Focus();
}
else
{
My_form c = new My_form();
c.MdiParent = this;
c.Show();
}
答案 0 :(得分:4)
桌面窗口管理器(DWM)负责Windows Vista和7中的Aero效果,只为顶级窗口添加阴影和玻璃透明度。您的MDI儿童窗户不符合此类治疗的资格。实际上,阴影并不是他们唯一缺少的东西 - 它们看起来像是使用Aero Basic主题绘制的,这在使用Aero主题的机器上非常有视觉冲突。
不幸的是,除了完全脱离MDI之外,没有别的办法。无论如何,多文档界面现在几乎已经被弃用了。这样的界面为人们提供了比原先预期更难的使用,并且它们几乎完全被废弃,特别是微软自己的软件。您会注意到,Microsoft Office使用多个顶级窗口,而不是使用MDI。您应该考虑使用自己的软件做同样的事情。
MDI的另一种流行替代方案是选项卡式界面,通常由Web浏览器使用。在这里,您有一个单一的顶级窗口,所有子窗口在此主窗口的顶部显示为“选项卡”。用户可以更容易和直观地在子窗口之间切换,而不是作为独立的MDI子项。
答案 1 :(得分:2)
我最终得到了答案,如果我像
这样的儿童形式制作表格c.MdiParent =this;
它使表单的外观变得平坦,如果您希望将表单显示为默认窗口,如表单 不要使表格的mdi父亲!