我正在嘗試調整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子窗體不會改變尺寸?
您正在使用錯誤的工具進行工作。 MDI是一個過時的範例,MDI也要求子窗體具有正常的相當大的邊界才能正確工作。您可以使父窗體IsMDIContainer = false,將您的子窗體更改爲TopLevel = false,然後執行相同的操作。 – LarsTech
@LarsTech感謝與我一起看這個。什麼改變TopLevel?當我在一個表單上試過這個表單時,該表單不會顯示在任何地方 – elmer007
您必須將其添加到父容器。 'this.Controls.Add(yourChild);'。不要忘記讓它可見:'yourChild.Visible = true;' – LarsTech