Developer's Express LayoutControl是一個非常不錯的工具,但有幾個陷阱。
LayoutControl本身應該調整尺寸,只需很好地停靠在任何容器控件(如窗體,用戶控件或面板控件)內。在許多情況下,佈局控件是您放置在窗體/控件上的第一件事情,因爲所有其他內容都會放在它的「佈局」中。因此,您應該將佈局控件的「Dock」屬性設置爲「填充」或設置爲您想要停靠的窗體/控件的所需邊緣。
這裏的「陷阱」是佈局控件的內部邏輯可能會限制其外部尺寸或任何內部項目,如果它能夠這樣做,並且佈局項目想要成爲特定尺寸。這實際上比聽起來簡單。
例如,假設您在佈局控件中有一個標籤控件。默認情況下,標籤控件將自行調整大小以適合其文本的寬度。反過來,佈局控件將嘗試通過收縮/增大布局項目的大小來適應標籤的期望大小。所以這個標籤控件可能會讓你的佈局控件調整大小。我選擇標籤作爲示例,因爲它是弄亂佈局設計的最常見的控件。
我解決這個問題的方法是將標籤的「AutoSizeMode」屬性更改爲「垂直」(如果您想要文本包裝)或「無」(如果您要強制將其設置爲佈局控件希望的大小)。這釋放了佈局控制以做出寬度決定。
此外,如果您允許最終用戶調整佈局控件的大小(例如DevExpress的SplitterControl),則佈局將再次嘗試成爲其最佳大小,並且不允許SplitterControl遠離此最佳大小,如果其他控件更容易調整大小(如網格,樹,列表等)。在這種情況下,將「EmptySpaceItem」添加到佈局控件將允許它在調整大小時填充任何空白空間。要向您的佈局添加EmptySpaceItem,請右鍵單擊Visual Studio設計器中的佈局控件,然後選擇「自定義佈局」。自定義對話框將包含可以拖到佈局控件上的項目列表,包括EmptySpaceItem。
+1,一旦你使用它一段時間,你學習的技巧。當您分支到ASP.net Web表單庫並使用FormLayout時,情況會變得更糟。那東西是學習尺寸竅門的噩夢。 – Mohgeroth