2016-01-22 219 views
0

上下文:Winforms:調整窗體控件中的用戶控件的大小

我試圖使用Microsoft Prism guidelines構建表單。

我有兩個用戶控件注入表單。 表單包含兩個面板,表示容納用戶控件的容器。

用戶控件通過DI在運行時獲得注入(我使用的MVP模式與MVVM類似,但是針對Winforms進行了調整)。

表單具有默認的最小尺寸,但未指定最大尺寸。調整表格大小的唯一方法是將其全屏顯示。它將AutoSize屬性設置爲TRUE,並將AutoSizeMode設置爲GrowAndShrink

兩個用戶控件都將AutoSize設置爲TRUE。 用戶控件中的所有容器都將AutoSize屬性設置爲TRUE,將DOCK設置爲FILL並且AutoSizeMode = GrowAndShrink。未設置控件的最大大小。

表單內部的面板堆疊在另一個下方,並將Anchor屬性設置爲:TOP,LEFT,RIGHT,分別爲:底部,左側,右側。

問題:

當調整形式爲全屏,我希望用戶控制擴展到填滿整個屏幕。

這沒有發生。

用戶控件的大小沒有變化,我找不出原因。

謝謝。

UPDATE

如果我改變了面板的Dock屬性窗體裏面TOP,分別 FILL,面板將得到調整大小,但裏面的面板,用戶控件保持不變。

+0

您正在給出一堆衝突的佈局方向,Anchor調整大小,Dock大小調整大小,AutoScale調整大小,實際上應該發生什麼?如果這些UCs需要按比例縮放,則使用停靠的TableLayoutPanel來填充。 –

+0

我提到了所有的佈局設置,因爲有人可以指出一些明顯的錯誤。最終目標是能夠在運行時動態地將兩個自定義控件注入到表單中,並且正確調整大小。任何工作,並不需要額外的代碼是受歡迎的。 –

回答

0

忘掉你的控件上的對接和autosizemode - 只需使用Anchor,你會發現它工作得很好。

我從來沒有使用AutoSize = true,總是有它在false(因爲事實上我不得不檢查我的一些形式來驗證一個AutoSizeAutoSizeMode性能,即使存在上控制在我的形式)。

在你描述的場景中,我將Anchor設置爲Top, Left, Bottom, Right - 對於面板和其中包含的控件都是如此。

+0

將錨點設置爲頂部,左側,底部,用於鋪設面板將與面板重疊。如果我在第一個位置設置TOP,LEFT,RIGHT,第二個設置爲底部,左側,右側,則不會相應調整大小。然而,設置控件的所有錨點並不是全部,正如@Schlinger所建議的那樣,將DOCK設置爲FILL解決了我的問題的一部分,即用戶控件正在填充表單,但它們內部的控件不會調整大小。也許它有一些事實,因爲我使用FlowLayout作爲用戶控件的主要容器? –

1

將面板上的控件的Dock也設置爲Fill

+0

它確實重新調整了窗體中添加的用戶控件的大小,但用戶控件的內容沒有縮放。我使用FlowLayout作爲我的自定義控件中使用的所有用戶控件的容器。有什麼建議麼?謝謝 –

+0

設置應在usercontrol上調整大小的控件的錨定屬性。示例:如果文本框應該右移,然後將窗體向右擴展,則將錨設置爲TOP,LEFT和RIGHT。 – Schlinger

+0

嘗試設置建議的面板錨點。不工作。也許是因爲它在FlowLayout控件中,我使用流程中斷屬性?我不希望其他用戶控件與面板位於同一行。 –

0

首先,感謝讓我在正確的軌道上。他們提供的解決方案是有效的,但是,因爲我的解決方案使用具有不同行爲的特定控件,所以它只解決了部分問題。另一個問題是流程佈局控制。 似乎在流佈局內的控件上設置的錨點被忽略。切換到正常面板後,由提供的解決方案節省了一天的時間。獎勵!