Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在添加新MDI子窗口时避免屏幕反弹_C#_.net_Winforms_Mdi - Fatal编程技术网

C# 如何在添加新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 当此属性为

在我的MDI框架中,我正在创建MDI子窗口,如下所示:

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();
    }
    ...
}
之前:

之后: