2015-12-07 29 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

我同意這似乎是錯誤的方式來獲得這種效果和用戶控制會更好的可能性最大。