Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Umieszczanie kontrolek w formularzach systemu Windows jest określane nie tylko przez kontrolkę, ale także przez element nadrzędny kontrolki. W tym artykule opisano różne ustawienia udostępniane przez kontrolki i różne typy kontenerów nadrzędnych, które mają wpływ na układ.
Stałe położenie i rozmiar
Położenie kontrolki wyświetlanej na obiekcie nadrzędnym jest określane przez wartość właściwości Location względem lewej górnej części powierzchni nadrzędnej. Współrzędna lewej górnej pozycji kontrolki w obiekcie nadrzędnym to (x0,y0)
. Rozmiar kontrolki jest określany przez właściwość Size i reprezentuje szerokość i wysokość kontrolki.
kontenera
Po dodaniu kontrolki do elementu nadrzędnego, który wymusza automatyczne umieszczanie, położenie i rozmiar kontrolki zostają zmienione. W takim przypadku pozycja i rozmiar kontrolki mogą nie zostać ręcznie dostosowane w zależności od typu elementu nadrzędnego.
Właściwości MaximumSize i MinimumSize pomagają ustawić minimalną i maksymalną ilość miejsca, z których może korzystać kontrolka.
Margines i odstęp
Istnieją dwie właściwości kontrolek, które ułatwiają precyzyjne umieszczanie kontrolek: Margin i Padding.
Właściwość Margin definiuje przestrzeń wokół kontrolki, która utrzymuje inne kontrolki w określonej odległości od jej krawędzi.
Właściwość Padding definiuje przestrzeń wewnątrz kontrolki, która utrzymuje zawartość kontrolki (na przykład wartość jej właściwości Text) w określonej odległości od jej krawędzi.
Na poniższej ilustracji przedstawiono właściwości Margin i Padding w elemencie sterującym.
Projektant programu Visual Studio uwzględnia te właściwości podczas pozycjonowania i zmiany rozmiaru kontrolek. Linie przyciągania są wyświetlane jako prowadnice ułatwiające pozostanie poza określonym marginesem kontrolki. Na przykład, gdy przeciągasz kontrolkę obok innej kontrolki, program Visual Studio wyświetla linię przyciągania.
Automatyczne umieszczanie i rozmiar
Elementy sterujące można automatycznie umieszczać w ich elemencie nadrzędnym. Niektóre kontenery nadrzędne narzucają sposób rozmieszczenia, podczas gdy inne respektują ustawienia dotyczące rozmieszczania. Istnieją dwie właściwości kontrolki, które ułatwiają automatyczne ustawianie i dopasowanie rozmiaru w obiekcie nadrzędnym: Dock i Anchor.
Kolejność rysunku może mieć wpływ na automatyczne umieszczanie. Kolejność, w jakiej kontrolka jest rysowana, zależy od jej indeksu w kolekcji Controls elementu nadrzędnego. Ten indeks jest znany jako Z-order. Każdy element sterujący jest rysowany w odwrotnej kolejności, jak pojawiają się w kolekcji. Oznacza to, że kolekcja działa na zasadzie "pierwsze weszło, ostatnie wyszło" oraz "ostatnie weszło, pierwsze wyszło".
Właściwości MinimumSize i MaximumSize pomagają ustawić minimalną i maksymalną ilość miejsca, z których może korzystać kontrolka.
Stacja dokująca
Właściwość Dock
ustawia, które obramowanie kontrolki jest wyrównane do odpowiedniej strony elementu nadrzędnego, oraz jak jest zmieniany rozmiar kontrolki w obiekcie nadrzędnym.
Gdy kontrolka jest zadokowana, kontener określa miejsce, które powinna zajmować, oraz zmienia rozmiar i pozycję kontrolki. Szerokość i wysokość kontrolki są nadal zachowane na podstawie stylu dokowania. Na przykład, jeśli kontrolka jest zakotwiczona u góry, Height kontrolki jest zachowana, natomiast Width jest automatycznie dostosowywana. Jeśli kontrolka jest zadokowana po lewej stronie, Width kontrolki jest przestrzegana, ale Height jest automatycznie dostosowywana.
Nie można ręcznie ustawić Location, ponieważ zadokowanie kontrolki automatycznie ustawia jej położenie.
Z-order kontrolki ma wpływ na dokowanie. Podczas układania zadokowanych kontrolek wykorzystują dostępne dla nich miejsce. Jeśli na przykład kontrolka jest umieszczana jako pierwsza i zostaje zadokowana do góry, zajmuje całą szerokość kontenera. Jeśli następna kontrolka jest zadokowana po lewej stronie, ma mniej dostępnego miejsca w pionie.
Jeśli pozycja zadokowania kontrolki Z-order jest zmieniona, kontrolka zadokowana po lewej stronie ma teraz więcej przestrzeni początkowej dostępnej. Kontrolka używa całej wysokości kontenera. Kontrolka przymocowana na górze ma mniej dostępnej przestrzeni w poziomie.
Gdy kontener rośnie i maleje, kontrolki zadokowane do kontenera są przemieszczane i zmieniane rozmiar, aby zachować ich odpowiednie pozycje i rozmiary.
Jeśli wiele kontrolek jest zadokowanych po tej samej stronie kontenera, są one ułożone według ich Z-order.
kotwica
Zakotwiczenie kontrolki umożliwia powiązanie kontrolki z co najmniej jedną stroną kontenera nadrzędnego. Gdy kontener zmienia rozmiar, kontrolki podrzędne zakotwiczone do określonej strony zachowują swoją odległość do niej.
Kontrolę można zakotwiczyć na jedną lub więcej stron bez ograniczeń. Kotwica jest ustawiana za pomocą właściwości Anchor.
Automatyczne ustalanie rozmiaru
Właściwość AutoSize umożliwia kontrolce zmianę rozmiaru w razie potrzeby w celu dopasowania rozmiaru określonego przez właściwość PreferredSize. Można dostosować zachowanie rozmiaru dla określonych kontrolek, ustawiając właściwość AutoSizeMode
.
Tylko niektóre kontrolki obsługują właściwość AutoSize. Ponadto niektóre kontrolki obsługujące właściwość AutoSize obsługują również właściwość AutoSizeMode
.
Zawsze autentyczne zachowanie | Opis |
---|---|
Automatyczne ustalanie rozmiaru jest funkcją wykonywaną w czasie rzeczywistym. | Oznacza to, że nigdy nie powiększa ani nie zmniejsza elementu sterującego i nie ma dalszego efektu. |
Jeśli kontrolka zmieni rozmiar, wartość jej właściwości Location zawsze pozostaje stała. | Kiedy zawartość elementu sterującego powoduje jego rozrost, element sterujący rozrasta się na prawo i w dół. Elementy kontrolne nie rosną w lewą stronę. |
Właściwości Dock i Anchor są respektowane, gdy AutoSize jest true . |
Wartość właściwości Location kontrolki jest dostosowywana do poprawnej wartości. Kontrolka Label jest wyjątkiem od tej reguły. Po ustawieniu wartości właściwości zadokowanej Label kontrolki AutoSize na true , Label kontrolka nie będzie rozciągać się. |
Właściwości MaximumSize i MinimumSize kontrolki są zawsze respektowane, niezależnie od wartości jej właściwości AutoSize. | Właściwości MaximumSize i MinimumSize nie mają wpływu na AutoSize właściwość . |
Domyślnie nie ma ustawionego minimalnego rozmiaru. | Oznacza to, że jeśli kontrolka jest ustawiona tak, aby zmniejszała się przy AutoSize i nie ma zawartości, wartość jej właściwości Size wynosi (0x,0y) . W takim przypadku kontrolka zmniejsza się do punktu i nie będzie łatwo widoczna. |
Jeśli kontrolka nie implementuje GetPreferredSize metody, GetPreferredSize metoda zwraca ostatnią wartość przypisaną Size do właściwości. | Oznacza to, że ustawienie AutoSize nie true ma żadnego wpływu. |
Element sterujący w komórce TableLayoutPanel zawsze zmniejsza się, aby zmieścić się w komórce do momentu osiągnięcia jego MinimumSize. | Ten rozmiar jest wymuszany jako maksymalny rozmiar. Nie jest tak, gdy komórka jest częścią AutoSize wiersza lub kolumny. |
Właściwość AutoSizeMode
Właściwość AutoSizeMode zapewnia bardziej szczegółową kontrolę nad domyślnym zachowaniem AutoSize. Właściwość AutoSizeMode
określa, w jaki sposób kontrolka dostosowuje swój rozmiar do swojej zawartości. Na przykład zawartość może być tekstem dla elementu sterującego Button lub elementów sterujących podrzędnych dla kontenera.
Na poniższej liście przedstawiono wartości AutoSizeMode
i jego zachowanie.
-
Kontrolka rośnie lub zmniejsza się, aby obejmowała jego zawartość.
Wartości MinimumSize i MaximumSize są honorowane, ale bieżąca wartość właściwości Size jest ignorowana.
Jest to takie samo zachowanie jak kontrolki z właściwością AutoSize i bez właściwości
AutoSizeMode
. -
Kontrolka zwiększa się na tyle, na ile to konieczne, aby obejmowała jej zawartość, ale nie zmniejszy się poniżej wartości określonej przez jej właściwość Size.
Jest to domyślna wartość dla
AutoSizeMode
.
Kontrolki obsługujące właściwość AutoSize
W poniższej tabeli opisano poziom obsługi automatycznego określania rozmiaru przez kontrolkę.
Kontrola |
AutoSize obsługiwane |
AutoSizeMode obsługiwane |
---|---|---|
Button | ✔️ | ✔️ |
CheckedListBox | ✔️ | ✔️ |
FlowLayoutPanel | ✔️ | ✔️ |
Form | ✔️ | ✔️ |
GroupBox | ✔️ | ✔️ |
Panel | ✔️ | ✔️ |
TableLayoutPanel | ✔️ | ✔️ |
CheckBox | ✔️ | ❌ |
DomainUpDown | ✔️ | ❌ |
Label | ✔️ | ❌ |
LinkLabel | ✔️ | ❌ |
MaskedTextBox | ✔️ | ❌ |
NumericUpDown | ✔️ | ❌ |
RadioButton | ✔️ | ❌ |
TextBox | ✔️ | ❌ |
TrackBar | ✔️ | ❌ |
CheckedListBox | ❌ | ❌ |
ComboBox | ❌ | ❌ |
DataGridView | ❌ | ❌ |
DateTimePicker | ❌ | ❌ |
ListBox | ❌ | ❌ |
ListView | ❌ | ❌ |
MaskedTextBox | ❌ | ❌ |
MonthCalendar | ❌ | ❌ |
ProgressBar | ❌ | ❌ |
PropertyGrid | ❌ | ❌ |
RichTextBox | ❌ | ❌ |
SplitContainer | ❌ | ❌ |
TabControl | ❌ | ❌ |
TabPage | ❌ | ❌ |
TreeView | ❌ | ❌ |
WebBrowser | ❌ | ❌ |
ScrollBar | ❌ | ❌ |
AutoSize w środowisku projektowym
W poniższej tabeli opisano zachowanie rozmiaru kontrolki w czasie projektowania na podstawie wartości jej AutoSize i AutoSizeMode
właściwości.
Zastąpij właściwość SelectionRules, aby określić, czy dana kontrolka jest w stanie umożliwiającym zmianę rozmiaru użytkownika. W poniższej tabeli "nie można zmienić rozmiaru" oznacza Moveable tylko, "można zmienić rozmiar" oznacza AllSizeable i Moveable.
AutoSize ustawienie |
AutoSizeMode ustawienie |
Zachowanie |
---|---|---|
true |
Właściwość jest niedostępna. | Użytkownik nie może zmienić rozmiaru kontrolki w czasie projektowania, z wyjątkiem następujących kontrolek: - TextBox - MaskedTextBox - RichTextBox - TrackBar |
true |
GrowAndShrink | Użytkownik nie może zmienić rozmiaru kontrolki w czasie projektowania. |
true |
GrowOnly | Użytkownik może zmienić rozmiar kontrolki w czasie projektowania. Po ustawieniu właściwości Size użytkownik może tylko zwiększyć rozmiar kontrolki. |
false lub AutoSize jest ukryty |
Nie dotyczy. | Użytkownik może zmienić rozmiar kontrolki w czasie projektowania. |
Uwaga / Notatka
Aby zmaksymalizować produktywność, projektant formularzy Windows w Visual Studio przesłania właściwość AutoSize dla klasy Form. W czasie projektowania formularz zachowuje się tak, jakby właściwość AutoSize jest ustawiona na false
, niezależnie od rzeczywistego ustawienia. W czasie wykonywania nie jest stosowane żadne specjalne traktowanie, a właściwość AutoSize jest zastosowana tak, jak określono w ustawieniu właściwości.
Kontener: formularz
Form jest głównym obiektem formularzy systemu Windows. Aplikacja Windows Forms zwykle ma zawsze wyświetlany formularz. Formularze zawierają kontrolki i uwzględniają właściwości Location i Size kontrolki do ręcznego umieszczania. Formularze reagują również na właściwość dock w celu automatycznego umieszczania.
W większości przypadków formularz ma uchwyty na krawędziach, które umożliwiają użytkownikowi zmianę rozmiaru formularza. Właściwość Anchor kontrolki pozwala kontrolce rosnąć i zmniejszać w miarę zmiany rozmiaru formularza.
Kontener: Panel
Kontrolka Panel jest podobna do formularza, w ramach którego po prostu grupuje kontrolki razem. Obsługuje te same style ręcznego i automatycznego umieszczania, które wykonuje formularz. Aby uzyskać więcej informacji, zobacz sekcję kontenera : formularz.
Panel wtapia się bezproblemowo w element nadrzędny i odcina dowolny obszar kontrolki, który przekracza jego granice. Jeśli kontrolka wykracza poza granice panelu i AutoScroll jest ustawiona na true
, paski przewijania są wyświetlane, a użytkownik może przewijać panel.
W przeciwieństwie do kontrolki pola grupy , panel nie ma tytułu ani obramowania.
Powyższy obraz zawiera panel z właściwością BorderStyle ustawioną w celu zademonstrowania granic panelu.
Kontener: ramka grupy
Kontrolka GroupBox umożliwia identyfikację grupowania dla innych kontrolek. Zazwyczaj używasz pola grupy do podzielenia formularza według funkcji. Na przykład może istnieć formularz reprezentujący dane osobowe, a pola powiązane z adresem zostaną zgrupowane razem. W czasie projektowania można łatwo przenieść pole grupowe wraz z zawartymi w nim kontrolkami.
Pole grupy obsługuje te same style ręcznego i automatycznego umieszczania, jakie ma formularz. Aby uzyskać więcej informacji, zobacz sekcję kontenera : formularz. Grupowe pole także odcina dowolną część kontrolki, która wykracza poza granice panelu.
W przeciwieństwie do panelu sterowania panelu, pole grupowe nie ma możliwości przewijania zawartości i wyświetlania pasków przewijania.
Kontener: układ przepływu
Kontrolka FlowLayoutPanel rozmieszcza jego zawartość w kierunku przepływu poziomego lub pionowego. Zawartość kontrolki można opakowować z jednego wiersza do następnego lub z jednej kolumny do następnej. Alternatywnie można przyciąć zawartość, zamiast ją owijać.
Kierunek przepływu można określić, ustawiając wartość właściwości FlowDirection. Sterowanie FlowLayoutPanel poprawnie odwraca kierunek przepływu w układach „od prawej do lewej” (RTL). Możesz określić, czy zawartość kontrolki FlowLayoutPanel jest zawijana czy przycinana, ustawiając wartość właściwości WrapContents.
Kontrolka FlowLayoutPanel automatycznie dostosowuje swój rozmiar do swojej zawartości, gdy ustawisz właściwość AutoSize na wartość true
. Zapewnia również właściwość FlowBreak
dla kontrolek podrzędnych. Ustawienie wartości właściwości FlowBreak
na true
powoduje, że kontrolka FlowLayoutPanel zatrzymuje układanie kontrolek w bieżącym kierunku przepływu i przechodzi do następnego wiersza lub kolumny.
Powyższy obraz zawiera dwie kontrolki FlowLayoutPanel
z właściwością BorderStyle ustawioną w celu zademonstrowania granic kontrolki.
Kontener: układ tabeli
Kontrolka TableLayoutPanel rozmieszcza jego zawartość w siatce. Ponieważ układ jest wykonywany zarówno w czasie projektowania, jak i w czasie wykonywania, może on zmieniać się dynamicznie w miarę zmian środowiska aplikacji. Dzięki temu kontrolki w panelu mogą zmieniać proporcjonalnie rozmiar, dzięki czemu mogą reagować na zmiany, takie jak zmiana rozmiaru kontrolki nadrzędnej lub zmiana długości tekstu z powodu lokalizacji.
Każda kontrolka Windows Forms może być elementem podrzędnym kontrolki TableLayoutPanel, w tym inne wystąpienia TableLayoutPanel. Dzięki temu można tworzyć zaawansowane układy, które dostosowują się do zmian w czasie wykonywania.
Można również kontrolować kierunek rozszerzania (poziomo lub pionowo), po zapełnieniu kontrolki TableLayoutPanel kontrolkami podrzędnymi. Domyślnie kontrolka TableLayoutPanel rozwija się w dół, dodając wiersze.
Rozmiar i styl wierszy i kolumn można kontrolować przy użyciu właściwości RowStyles i ColumnStyles. Właściwości wierszy lub kolumn można ustawić indywidualnie.
Kontrolka TableLayoutPanel dodaje następujące właściwości do kontrolek podrzędnych: Cell
, Column
, Row
, ColumnSpan
i RowSpan
.
Powyższy obraz zawiera tabelę z właściwością CellBorderStyle ustawioną w celu zademonstrowania granic każdej komórki.
Kontener: Podział kontenera
Kontrolka windows Forms SplitContainer może być uważana za kontrolkę złożoną; jest to dwa panele oddzielone słupkiem ruchomym. Gdy wskaźnik myszy znajduje się na pasku, wskaźnik zmienia kształt, aby pokazać, że pasek jest wymienny.
Za pomocą kontrolki SplitContainer można tworzyć złożone interfejsy użytkownika; często wybór w jednym panelu określa, jakie obiekty są wyświetlane na drugim panelu. Ten układ jest skuteczny w przypadku wyświetlania i przeglądania informacji. Posiadanie dwóch paneli umożliwia agregowanie informacji w obszarach, a pasek lub "rozdzielacz", ułatwia użytkownikom zmianę rozmiaru paneli.
Powyższy obraz zawiera podzielony kontener, aby utworzyć okienko po lewej i prawej stronie. Prawy panel zawiera drugi podzielony kontener z ustawieniem Orientation na Vertical. Właściwość BorderStyle jest ustawiona tak, aby zademonstrować granice każdego panelu.
Kontener: kontrolka tabulatora
TabControl wyświetla wiele kart, takich jak podziały w notesie lub etykiety w zestawie folderów w szafce kartotekowej. Karty mogą zawierać obrazy i inne elementy sterujące. Użyj kontrolki tabulacji, aby utworzyć wielostronicowe okno dialogowe, które pojawia się w różnych miejscach w systemie operacyjnym Windows, takich jak Panel sterowania i Właściwości wyświetlania. Ponadto można użyć TabControl do tworzenia stron właściwości, które są używane do ustawiania grupy powiązanych właściwości.
Najważniejszą cechą TabControl jest TabPages, który zawiera poszczególne karty. Każda karta jest obiektem TabPage.
.NET Desktop feedback