2015-12-07 30 views
1

我正在使用Windows Forms编写应用程序。我需要使用FormBorderStyle设置为None的MDI子。问题是,当我最大化时,孩子没有正确显示。代码来显示Form2的是:带FormBorderStyle的MDI子代=无无法正确最大化

this.WindowState = FormWindowState.Maximized; 
    Form2 frm = new Form2(); 
    frm.MdiParent = this; 
    frm.Size = this.ClientSize; 
    frm.ShowInTaskbar = false; 
    frm.WindowState = FormWindowState.Maximized; 
    frm.Show(); 

这里的窗体2的外观在设计师

enter image description here

而这里的应用:

enter image description here

如何解决这个问题,以正确显示窗体2 ?

+0

通过使用'UserControl'而不是MDI父母可以轻松解决。我从来没有找到任何使用MDI表格。窗口内的窗口对我来说没有意义 – SimpleVar

+0

我建议给'frm.Show(this)'一试。也可以在添加孩子后最大化父母,这是有所不同的。 –

+0

@RenéVogt感谢您的意见。但是,frm.Show(this)引发异常:不是顶级窗体的窗体不能显示为模式对话框。在调用Show之前,从任何父窗体中删除窗体。所以我不能和MDI一起使用它。事后最大化的结果与文章中所述的结果相同。 – user3613916

回答

1

您可以尝试下面的代码。它似乎在做你正在寻找的东西。

 this.WindowState = FormWindowState.Maximized; 
     Form2 frm = new Form2(); 
     frm.MdiParent = this; 
     frm.Dock = DockStyle.Fill; 
     //frm.Size = this.ClientSize; 
     frm.ShowInTaskbar = false; 
     //frm.WindowState = FormWindowState.Maximized; 

     frm.Show(); 

唯一的变化是增加了frm.Dock = DockStyle.Fill;并注释掉设置Form2的大小和窗口状态。

当我运行程序时,这是效果。

enter image description here

我同意这似乎是错误的方式来获得这种效果和用户控制会更好的可能性最大。