子窗体隐藏在MDI父容器的后面

4
打开子窗体时,它会隐藏在 MDI 父容器的标题栏后面。
子窗体的 WindowState 属性设置为 Maximized。FormBorderStyle 属性设置为 None。
如果我最小化 MDI 父窗体并将其最大化,则子窗体会出现在前面。
如何解决这种情况?
编辑:
我使用以下代码打开子窗体。
    this.childForm= new ChildForm();
    this.childForm.MdiParent = this;
    this.WindowState = FormWindowState.Maximized;

    this.childForm.Dock = DockStyle.Fill;
    this.childForm.Show();
    this.childForm.BringToFront();
    this.childForm.Focus();
3个回答

4
尝试以下代码。
    Form1 newMDIChild = new Form1();
    newMDIChild.MdiParent = this;
    newMDIChild.Show();
    this.LayoutMdi(MdiLayout.Cascade);
    newMDIChild.Dock = DockStyle.Fill;

@Marshal,从Nazima的代码中尝试将DockStyle.Fill属性添加到你的子窗体中。由于子窗体没有边框,DockStyle属性将会使你的子窗体正确地“重新对齐”。 - LarsTech

3

原生的Windows多文档界面(MDI)实现无法处理无边框的MDI子窗口。不幸的是,Winforms忘记了强制执行该限制。您可以在Show()调用后移动WindowState赋值,但这会导致另一个问题。

只需不要使其无边框,因为边框根本不可见。


0
AboutBox1 ab = new AboutBox1();
ab.MdiParent = MDIForm.ActiveForm;
ab.TopMost = true;
ab.Show();

1
请不要在您的问题或答案中使用签名。我们已经知道您是作者。 - Denys Séguret

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接