C# 如何在添加新MDI子窗口时避免屏幕反弹
在我的MDI框架中,我正在创建MDI子窗口,如下所示:C# 如何在添加新MDI子窗口时避免屏幕反弹,c#,.net,winforms,mdi,C#,.net,Winforms,Mdi,在我的MDI框架中,我正在创建MDI子窗口,如下所示: Form frm = new frmMyChild(); frm.MdiParent = this; frm.WindowState = FormWindowState.Maximized; frm.Show(); frm.Focus(); 到目前为止,这一切都很好,但屏幕很快就会“反弹”,因为子窗口被置于“正常”状态,然后它们再次被最大化。如何防止这种情况发生?即使在MDI父窗体中添加了MenuStrip,其值仍然是null 当此属性为
Form frm = new frmMyChild();
frm.MdiParent = this;
frm.WindowState = FormWindowState.Maximized;
frm.Show();
frm.Focus();
到目前为止,这一切都很好,但屏幕很快就会“反弹”,因为子窗口被置于“正常”状态,然后它们再次被最大化。如何防止这种情况发生?即使在MDI父窗体中添加了MenuStrip,其值仍然是
null
当此属性为
null
时,MDI子菜单的系统菜单控件不会与MenuStrip(或旧的主菜单
)混合,因此子表单标题栏仍然可见并位于MenuStrip上方。创建并最大化新的子表单时,MenuStrip会在重新创建子表单标题时上下反弹 将
MainMenuStrip
属性设置为MDI父菜单的实例,将导致MDI子菜单的系统菜单控件与MenuStrip(或MainMenu
)混合
有趣的是,在中可以看到,随着时间的推移,这种行为和设计发生了多少次变化(这只是其中的注释:)
MDIMenuStrip
是在设计时创建的MDI父级菜单,并在InitializeComponent()
中初始化
public partial class MDIParent : Form
{
public MDIParent()
{
InitializeComponent();
this.MainMenuStrip = this.TheMDIMenuStrip;
this.TheMDIMenuStrip.SendToBack();
}
...
}
之前:
之后: