在我的 MDI 框架中,我正在创建 MDI 子窗口,如下所示:
Form frm = new frmMyChild();
frm.MdiParent = this;
frm.WindowState = FormWindowState.Maximized;
frm.Show();
frm.Focus();
到目前为止,效果很好,但屏幕很快就会“弹跳”,因为子窗口被置于“正常”状态,然后它们再次最大化。如何防止这种情况发生?
即使将 MenuStrip 添加到 MDI 父窗体中,窗体.MainMenuStrip还是null
.
当这个属性是null
,MDI 子级的系统菜单控件不是blended使用 MenuStrip(或旧的MainMenu
),因此子窗体标题栏仍然可见并位于 MenuStrip 上方。
当创建新的子窗体并将其最大化时,MenuStripbounces重新创建子表单标题时向上和向下。
设置MainMenuStrip
属性到 MDI 父级的 MenuStrip 实例,将导致 MDI 子级的系统菜单控件blend使用 MenuStrip(或MainMenu
).
很有趣的是在.Net 源代码随着时间的推移,这种行为和设计已经改变了多少次(这只是那里的评论:)。
TheMDIMenuStrip
是 MDI 父级的 MenuStrip 在设计时创建并在InitializeComponent()
.
public partial class MDIParent : Form
{
public MDIParent()
{
InitializeComponent();
MainMenuStrip = TheMDIMenuStrip;
TheMDIMenuStrip.SendToBack();
}
...
}
Before:
After:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)