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,框架似乎会感到困惑。你最终会在最大化和默认大小之间的某个地方出现一个奇怪的状态。

像这样设置 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