2011-09-21 322 views
8

我在WinForms窗體中設置了DevExpress LayoutControl。我希望LayoutControl在調整窗體大小時調整horizontally,或者至少使用戶調整LayoutControl的大小。如何調整DevExpress控件的大小

我在DevExpress的頁面上看到了將SizeConstraintsType屬性更改爲"default"的建議。我也試圖將控制權固定在其父母的左側和右側。我也致力於增加MaxSize。有誰知道如何做到這一點?

我只是基本上想做相當於(在HTML中)<table width=100%>。有誰知道如何做到這一點?

在此先感謝!

回答

13

Developer's Express LayoutControl是一個非常不錯的工具,但有幾個陷阱。

LayoutControl本身應該調整尺寸,只需很好地停靠在任何容器控件(如窗體,用戶控件或面板控件)內。在許多情況下,佈局控件是您放置在窗體/控件上的第一件事情,因爲所有其他內容都會放在它的「佈局」中。因此,您應該將佈局控件的「Dock」屬性設置爲「填充」或設置爲您想要停靠的窗體/控件的所需邊緣。

這裏的「陷阱」是佈局控件的內部邏輯可能會限制其外部尺寸或任何內部項目,如果它能夠這樣做,並且佈局項目想要成爲特定尺寸。這實際上比聽起來簡單。

例如,假設您在佈局控件中有一個標籤控件。默認情況下,標籤控件將自行調整大小以適合其文本的寬度。反過來,佈局控件將嘗試通過收縮/增大布局項目的大小來適應標籤的期望大小。所以這個標籤控件可能會讓你的佈局控件調整大小。我選擇標籤作爲示例,因爲它是弄亂佈局設計的最常見的控件。

我解決這個問題的方法是將標籤的「AutoSizeMode」屬性更改爲「垂直」(如果您想要文本包裝)或「無」(如果您要強制將其設置爲佈局控件希望的大小)。這釋放了佈局控制以做出寬度決定。

此外,如果您允許最終用戶調整佈局控件的大小(例如DevExpress的SplitterControl),則佈局將再次嘗試成爲其最佳大小,並且不允許SplitterControl遠離此最佳大小,如果其他控件更容易調整大小(如網格,樹,列表等)。在這種情況下,將「EmptySpaceItem」添加到佈局控件將允許它在調整大小時填充任何空白空間。要向您的佈局添加EmptySpaceItem,請右鍵單擊Visual Studio設計器中的佈局控件,然後選擇「自定義佈局」。自定義對話框將包含可以拖到佈局控件上的項目列表,包括EmptySpaceItem。

+0

+1,一旦你使用它一段時間,你學習的技巧。當您分支到ASP.net Web表單庫並使用FormLayout時,情況會變得更糟。那東西是學習尺寸竅門的噩夢。 – Mohgeroth