2016-05-23 88 views
0

我正在嘗試調整Mdi父窗體的大小以適應Mdi子窗體的大小。因此,打開子表單時,父表單將根據子表單的大小進行大小調整,並且子表單的大小與設計器中創建的大小相同。如何防止Mdi子窗體大小在更改時打開

這看起來很簡單,我已經幾乎具有以下實現它:

frm_newWindow newWindow = new frm_newWindow(); 
this.ClientSize = newWindow.Size; 
newWindow.MdiParent = this; 
newWindow.Dock = DockStyle.Fill; 
this.MinimumSize = this.Size; 
newWindow.Show(); 

起初,我以爲是偉大的工作 - 父窗體越長越子窗體充滿了客戶區 - 我將繼續前進。但是,我仔細一看,意識到尺寸不正確。父表單不會重新調整大小,但由於某種原因,表單大小也會發生變化。因此,孩子窗體上的控件大小不正確,位置不正確。他們相當接近,但不正確。例如,在設計器中,一個在列表框下方「自動定位」的文本框(在文本框和列表框之間顯示一條藍色線,並將其拖動到位置時)最終在運行時降低到表單上。

我也試過:

this.ClientSize = newWindow.ClientSize 

因爲子窗體沒有邊框,我想,也許不存在的邊界仍然以某種方式在計算子窗體的大小。雖然這條線表現相同。

在Visual Studio創建的InitializeComponent()行之外的子窗體上目前沒有代碼。表單的邊框樣式設置爲「無」。除了其大小和文字外,其他所有財產仍然是默認值。

打開時如何保持Mdi子窗體不會改變尺寸?

+0

您正在使用錯誤的工具進行工作。 MDI是一個過時的範例,MDI也要求子窗體具有正常的相當大的邊界才能正確工作。您可以使父窗體IsMDIContainer = false,將您的子窗體更改爲TopLevel = false,然後執行相同的操作。 – LarsTech

+0

@LarsTech感謝與我一起看這個。什麼改變TopLevel?當我在一個表單上試過這個表單時,該表單不會顯示在任何地方 – elmer007

+0

您必須將其添加到父容器。 'this.Controls.Add(yourChild);'。不要忘記讓它可見:'yourChild.Visible = true;' – LarsTech

回答

0

在子窗體中將AutoScaleMode的使用權限設置爲None。 這將修復它。

相關問題