2011-09-21 18 views
8

Mam zestaw DevExpress LayoutControl ustawiony w formularzu WinForm. Chciałbym, aby LayoutControl zmienił rozmiar horizontally, gdy rozmiar formularza zostanie zmieniony, lub przynajmniej sprawi, aby LayoutControl skalowalny przez użytkownika.Zmiana rozmiaru kontrolek DevExpress

Widziałem na stronie DevExpress sugestie, aby zmienić właściwość SizeConstraintsType na "default". Próbowałem również zakotwiczyć sterowanie po prawej i lewej stronie rodzica. Pracowałem również nad zwiększeniem liczby MaxSize. Czy ktoś wie, jak to zrobić?

Po prostu chcę zrobić odpowiednik (w HTML) <table width=100%>. Czy ktoś wie, jak to zrobić?

Z góry dziękuję!

Odpowiedz

13

Ekspresowy układ graficzny Layout Control to bardzo ładne narzędzie, ale ma kilka suwaków.

Sam układ LayoutControl powinien mieć bardzo dokładną wielkość, umieszczoną wewnątrz dowolnego elementu sterującego pojemnikiem, takiego jak formularz, kontrolka użytkownika lub panel kontrolny. W wielu przypadkach kontrola układu jest jedną z pierwszych rzeczy, które umieszczasz w formularzu/sterowaniu, ponieważ wszystko inne znajduje się w środku i jest "layedout". Powinieneś więc ustawić właściwość "Dock" kontrolki układu na "Wypełnij" lub na żądaną krawędź formuły/formantu, do której ma ona zostać dokowana.

"GOTOWA" polega na tym, że wewnętrzna logika układu sterowania może ograniczyć wymiary zewnętrzne lub dowolny element wewnętrzny, jeśli jest to możliwe, a elementy układu mają być określone. Jest to w rzeczywistości prostsze niż się wydaje.

Na przykład powiedzmy, że masz kontrolkę etykiety w swoim sterowaniu układem. Domyślna kontrolka etykiety dopasuje się do szerokości tekstu. Z kolei kontrola układu będzie próbowała dostosować się do pożądanego rozmiaru etykiety, zmniejszając/zwiększając rozmiar elementu układu. Tak więc ta kontrola jednej etykiety może być kłopotliwa przy zmianie rozmiaru elementów sterujących układem. Jako przykład wybrałem etykietę, ponieważ jest to najczęstsza kontrola, która niszczy twój projekt layoutu.

Sposób, w jaki to naprawiam, to zmiana właściwości etykiety "AutoSizeMode" na "vertical" (jeśli chcesz zawijać tekst) lub "none" (jeśli chcesz wymusić jej rozmiar, jaki układ kontroli chce, aby był). Spowoduje to zwolnienie kontroli układu w celu podjęcia decyzji dotyczących szerokości.

Także, jeśli pozwalasz na zmianę rozmiaru układu przez użytkownika końcowego (np. Za pomocą DevExpress 'SplitterControl), układ ponownie spróbuje uzyskać optymalny rozmiar i nie pozwoli, aby SplitterControl odstąpił od tego optymalnego rozmiaru, jeśli inne elementy sterowania są łatwiejsze do zmieniania (jak siatka, drzewo, lista itp.). W takim przypadku dodanie elementu "EmptySpaceItem" do elementu sterującego układem pozwoli wypełnić puste miejsce podczas zmiany rozmiaru. Aby dodać EmptySpaceItem do swojego układu, kliknij prawym przyciskiem myszy kontrolkę układu w projektancie Visual Studio i wybierz "Dostosuj układ". Okno dialogowe dostosowywania będzie zawierało listę elementów, które można przeciągnąć do formantu układu, w tym do elementu EmptySpaceItem.

+0

+1, gdy użyjesz go przez jakiś czas, nauczysz się sztuczek. Pogorszy się, gdy rozgałęzisz się do bibliotek formularzy internetowych ASP.net i skorzystasz z FormLayout. To było koszmarem, aby nauczyć się sztuczek klejących. – Mohgeroth