Windows MDI子窗体在WIndowMaximized状态下不会打开

San*_*hak 0 c# mdichild windowstate

我已将表单设置为MDI表单的子表单,其窗口状态设置为最大化.

当我从MDI容器中打开该表单时,它不会以最大化状态打开.为什么会发生这种情况?如何才能使其最大化?

这就是我从mdi容器中显示子表单的方式.

private void ShowNewForm(object sender, EventArgs e)
{
    FormChild childForm = new FormChild ();
    childForm.MdiParent = this;
    childForm.WindowState = FormWindowState.Maximized;
    childForm.Text = "Window " + childFormNumber++;
    childForm.Show();
}
Run Code Online (Sandbox Code Playgroud)

小智 9

找到解决此问题的最佳方法 ..只需使用两行:

frm r = new frm();
r.MdiParent = this;
r.Show();
r.WindowState = FormWindowState.Minimized;
r.WindowState = FormWindowState.Maximized;
Run Code Online (Sandbox Code Playgroud)

事实证明,如果首先将表格最小化,然后最大化,则获得所需的结果!


小智 5

框架中确实存在错误。如果您从 GUI 将 WindowState 设置为 Maximized,框架似乎会感到困惑。你最终会在最大化和默认大小之间的某个地方出现一个奇怪的状态。

混合 MdiChild 状态的图像

像这样设置 WindowState 时,将忽略在代码中更正它的尝试。下面的代码生成了上面的图像。

private void ShowNewForm(object sender, EventArgs e)
    {
        Form1 childForm = new Form1();
        childForm.MdiParent = this;
        childForm.Text = "Window " + childFormNumber++;
        childForm.Show();
        childForm.WindowState = FormWindowState.Maximized;
    }
Run Code Online (Sandbox Code Playgroud)

对 ShowNewForm() 的后续调用将正确显示,但第一个子项将始终表现出此行为。

只需在 GUI 中将 WindowState 恢复为正常,然后使用代码将窗体最大化,如上述代码所示。

我的版本:
C# Express 10.0.40219.1 SP1
.NET 4.0.30319 SP1