Sdílet prostřednictvím


Umístění a rozložení ovládacích prvků

Umístění ovládacího prvku ve Windows Forms určuje nejen ovládací prvek, ale také nadřazený prvek ovládacího prvku. Tento článek popisuje různá nastavení poskytovaná ovládacími prvky a různými typy nadřazených kontejnerů, které ovlivňují rozložení.

Pevná pozice a velikost

Pozice, v níž se ovládací prvek objeví na nadřazeném povrchu, je určena hodnotou vlastnosti Location vzhledem k levému hornímu rohu tohoto povrchu. Souřadnice pozice vlevo nahoře ovládacího prvku v nadřazeném prvku je (x0,y0). Velikost ovládacího prvku je určena vlastností Size a představuje šířku a výšku ovládacího prvku.

Umístění ovládacího prvku vzhledem k kontejneru

Když se ovládací prvek přidá do nadřazeného objektu, který vynucuje automatické umístění, změní se umístění a velikost ovládacího prvku. V tomto případě nemusí být umístění a velikost ovládacího prvku ručně upraveny v závislosti na typu nadřazeného prvku.

Vlastnosti MaximumSize a MinimumSize pomáhají nastavit minimální a maximální prostor, který může ovládací prvek použít.

Okraje a odsazení

Existují dvě vlastnosti ovládacího prvku, které pomáhají s přesným umístěním ovládacích prvků: Margin a Padding.

Vlastnost Margin definuje prostor kolem ovládacího prvku, který udržuje jiné ovládací prvky v zadané vzdálenosti od ohraničení ovládacího prvku.

Vlastnost Padding definuje prostor v interiéru ovládacího prvku, který udržuje obsah ovládacího prvku (například hodnotu jeho vlastnosti Text) zadanou vzdálenost od ohraničení ovládacího prvku.

Následující obrázek znázorňuje vlastnosti Margin a Padding na ovládacím prvku.

Vlastnosti odsazení a okrajů pro ovládací prvky Windows Forms

Návrhář sady Visual Studio respektuje tyto vlastnosti při umístění a změně velikosti ovládacích prvků. Vodítka přichytávání se zobrazí jako pomůcky, které vám pomohou dodržet zadané okrajové hranice ovládacího prvku. Visual Studio například zobrazí vodicí čáru, když přetáhnete ovládací prvek vedle jiného.

Animovaný obrázek znázorňující zachytávání s vlastnostmi okrajů pro Windows Forms .NET v sadě Visual Studio

Automatické umístění a velikost

Ovládací prvky lze automaticky umístit do nadřazeného objektu. Některé nadřazené kontejnery vynucují umístění, zatímco jiné respektují nastavení, která řídí umístění. Ovládací prvek má dvě vlastnosti, které pomáhají automatickému umístění a velikosti v rámci nadřazeného objektu: Dock a Anchor.

Pořadí výkresu může mít vliv na automatické umístění. Pořadí, ve kterém je ovládací prvek nakreslen, je určeno jeho indexem v kolekci nadřazeného prvku Controls. Tento index se označuje jako Z-order. Každý ovládací prvek se nakreslí v obráceném pořadí, ve které se zobrazí v kolekci. To znamená, že kolekce je kolekce nakreslená jako první a poslední v první.

Vlastnosti MinimumSize a MaximumSize pomáhají nastavit minimální a maximální prostor, který může ovládací prvek použít.

Přístav

Vlastnost Dock nastaví, které ohraničení ovládacího prvku je zarovnané na odpovídající stranu nadřazeného objektu, a způsob změny velikosti ovládacího prvku v rámci nadřazeného prvku.

Formulář Windows s tlačítky a nastavením doku

Když je ovládací prvek ukotvený, kontejner určuje prostor, který by měl zabírat a měnit velikost a umístění ovládacího prvku. Šířka a výška ovládacího prvku se nadále respektují v závislosti na stylu ukotvení. Pokud je například ovládací prvek ukotvený k horní části, je tento ovládací prvek respektován, Height ale Width automaticky se upraví. Pokud je ovládací prvek ukotvený vlevo, je respektován Width, ale Height se automaticky upraví.

Ovládací prvek Location nelze nastavit ručně, protože jeho ukotvení automaticky určuje jeho pozici.

Ovládací Z-order prvek má vliv na ukotvení. Vzhledem k tomu, že jsou ukotvené ovládací prvky rozloženy, používají prostor, který je jim k dispozici. Pokud je například ovládací prvek nakreslen jako první a ukotvený k horní části, zabírá celou šířku kontejneru. Pokud je další ovládací prvek ukotvený vlevo, má menší svislý prostor, který je pro něj k dispozici.

Windows formulář s tlačítky ukotvenými vlevo a nahoře, kde nahoře je tlačítko větší.

Pokud je ovládací prvek Z-order obrácený, ovládací prvek, který je ukotvený vlevo, má nyní k dispozici více počátečního místa. Ovládací prvek používá celou výšku kontejneru. Ovládací prvek, který je ukotvený k horní části, má méně vodorovného prostoru k dispozici.

Windows formulář s tlačítky ukotvenými vlevo a nahoře, přičemž ta vlevo jsou větší.

S rostoucím a zmenšujícím se kontejnerem se ovládací prvky ukotvené k kontejneru přemísťují a mění jejich velikost, aby se zachovaly příslušné pozice a velikosti.

Animace znázorňující změnu velikosti formuláře Windows s tlačítky ukotvenými ve všech pozicích

Pokud je více ovládacích prvků ukotvených na stejné straně kontejneru, jsou naskládané podle jejich Z-order.

Formulář Windows se dvěma tlačítky ukotvenými vlevo

kotva

Ukotvení ovládacího prvku umožňuje spojit ovládací prvek s jednou nebo více stranami nadřazeného kontejneru. Když se změní velikost kontejneru, podřízené ovládací prvky ukotvené k určité straně udržují svou vzdálenost od této strany.

Ovládací prvek lze ukotvit na jednu nebo více stran bez omezení. Ukotvení je nastaveno s Anchor vlastností.

Animace znázorňující změnu velikosti formuláře Windows s tlačítky ukotvenými ve všech pozicích

Automatické přizpůsobení velikosti

Vlastnost AutoSize umožňuje, aby ovládací prvek v případě potřeby změnil jeho velikost tak, aby odpovídal velikosti určené PreferredSize vlastností. Chování nastavení velikosti pro konkrétní ovládací prvky upravíte nastavením vlastnosti AutoSizeMode.

Vlastnost AutoSize podporují pouze některé ovládací prvky. Kromě toho některé ovládací prvky, které podporují AutoSize vlastnost, také podporuje AutoSizeMode vlastnost.

Vždy pravdivé chování Popis
Automatické přizpůsobení velikosti je funkce, která se provádí za běhu programu. To znamená, že se nikdy nezvětší nebo zmenší ovládací prvek a pak nebude mít žádný další vliv.
Pokud ovládací prvek změní velikost, hodnota jeho Location vlastnost vždy zůstane konstantní. Když obsah ovládacího prvku způsobí, že se zvětšuje, ovládací prvek se rozroste směrem doprava a dolů. Ovládací prvky se nezvětšují doleva.
Vlastnosti Dock a Anchor jsou respektovány, pokud je AutoSizetrue. Hodnota vlastnosti Location ovládacího prvku je upravena na správnou hodnotu.

Ovládací Label prvek je výjimkou tohoto pravidla. Když nastavíte hodnotu vlastnosti ukotveného Label ovládacího prvku AutoSize na truehodnotu , Label ovládací prvek se neroztáhne.
Vlastnosti MaximumSize a MinimumSize ovládacího prvku jsou vždy dodrženy bez ohledu na hodnotu jeho vlastnosti AutoSize. Vlastnosti MaximumSize a MinimumSize nejsou ovlivněny vlastností AutoSize.
Ve výchozím nastavení není nastavená minimální velikost. To znamená, že pokud je ovládací prvek nastaven na zmenšení pod AutoSize a nemá žádný obsah, hodnota jeho vlastnosti Size je (0x,0y). V tomto případě se ovládací prvek zmenší na bod a nebude snadno viditelný.
Pokud ovládací prvek neimplementuje metodu GetPreferredSize , GetPreferredSize vrátí metoda poslední hodnotu přiřazenou Size vlastnosti. To znamená, že nastavení AutoSizetrue nemá žádný vliv.
Ovládací prvek v buňce TableLayoutPanel se vždy zmenšuje, aby se vešel do buňky, až nakonec dosáhne MinimumSize. Tato velikost se vynucuje jako maximální velikost. To není případ, kdy je buňka součástí AutoSize řádku nebo sloupce.

Vlastnost AutoSizeMode

Vlastnost AutoSizeMode poskytuje jemněji odstupňovanou kontrolu nad výchozím chováním AutoSize. Vlastnost AutoSizeMode určuje, jak se ovládací prvek přizpůsobuje velikosti svého obsahu. Obsah může být například text pro ovládací prvek Button nebo podřízené ovládací prvky kontejneru.

Následující seznam zobrazuje AutoSizeMode hodnoty a jeho chování.

  • AutoSizeMode.GrowAndShrink

    Ovládací prvek se zvětší nebo zmenší tak, aby zahrnoval jeho obsah.

    Hodnoty MinimumSize a MaximumSize jsou dodrženy, ale aktuální hodnota vlastnosti Size je ignorována.

    Toto chování je stejné jako u ovládacích prvků s vlastností AutoSize a bez vlastnosti AutoSizeMode.

  • AutoSizeMode.GrowOnly

    Ovládací prvek roste tolik, kolik je nutné k zahrnutí jeho obsahu, ale nezmenší se na menší hodnotu než hodnota určená jeho vlastností Size.

    Toto je výchozí hodnota pro AutoSizeMode.

Ovládací prvky, které podporují vlastnost AutoSize

Následující tabulka popisuje úroveň podpory automatického nastavení velikosti u jednotlivých ovládacích prvků:

Řízení AutoSize podporovaný AutoSizeMode podporovaný
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 v návrhovém prostředí

Následující tabulka popisuje chování nastavení velikosti ovládacího prvku v době návrhu na základě hodnoty jeho AutoSize a AutoSizeMode vlastností.

Přepište vlastnost SelectionRules a určete, zda je daný ovládací prvek nastavitelný uživatelem. V následující tabulce "nelze změnit velikost" znamená Moveable pouze, že "může změnit velikost" znamená AllSizeable a Moveable.

AutoSize nastavení AutoSizeMode nastavení Chování
true Vlastnost není k dispozici. Uživatel nemůže změnit velikost ovládacího prvku v době návrhu, s výjimkou následujících ovládacích prvků:

- TextBox
- MaskedTextBox
- RichTextBox
- TrackBar
true GrowAndShrink Uživatel nemůže změnit velikost ovládacího prvku v době návrhu.
true GrowOnly Uživatel může změnit velikost ovládacího prvku v době návrhu. Pokud je nastavena vlastnost Size, uživatel může zvětšit pouze velikost ovládacího prvku.
false nebo AutoSize je skrytý Nelze použít. Uživatel může změnit velikost ovládacího prvku v době návrhu.

Poznámka:

Pro zvýšení produktivity ve Visual Studiu návrhář Windows Forms stínuje vlastnost AutoSize pro třídu Form. V době návrhu se formulář chová, jako by vlastnost AutoSize byla nastavena na false, bez ohledu na skutečné nastavení. Za běhu není provedeno žádné zvláštní přizpůsobení a vlastnost AutoSize se použije podle nastavení této vlastnosti.

Kontejner: Formulář

Jedná se Form o hlavní objekt modelu Windows Forms. Aplikace Windows Forms obvykle obsahuje formulář, který se zobrazuje vždy. Formuláře obsahují ovládací prvky a respektují Location vlastnosti Size ovládacího prvku pro ruční umístění. Formuláře také reagují na vlastnost Dock pro automatické umístění.

Ve většině případů má formulář úchyty na okrajích, které uživateli umožňují změnit velikost formuláře. Vlastnost Anchor ovládacího prvku umožňuje zvětšit a zmenšit ovládací prvek při změně velikosti formuláře.

Kontejner: Panel

Ovládací Panel prvek je podobný formuláři, ve které jednoduše seskupuje ovládací prvky. Podporuje stejné styly ručního a automatického umístění jako formulář. Další informace najdete v části Kontejner: Formulář .

Panel se bez problémů s nadřazeným objektem prolíná a ořízne libovolnou oblast ovládacího prvku, který spadne mimo hranice panelu. Pokud ovládací prvek spadá mimo hranice panelu a AutoScroll je nastaven na true, zobrazí se posuvníky a uživatel může panel posunout.

Na rozdíl od ovládacího prvku skupinového pole panel nemá popisek a ohraničení.

Formulář Windows s panelem a polem skupiny

Výše uvedený obrázek obsahuje panel s BorderStyle vlastností nastavenou pro předvedení hranic panelu.

Kontejner: Pole Seskupovat

Ovládací GroupBox prvek poskytuje identifikovatelné seskupení pro jiné ovládací prvky. Pole skupiny se obvykle používá k rozdělení formuláře podle funkce. Můžete mít například formulář představující osobní údaje a pole související s adresou by seskupila dohromady. V době návrhu je snadné přesouvat pole skupiny spolu s jeho obsaženými ovládacími prvky.

Pole skupiny podporuje stejné styly ručního a automatického umístění, které formulář dělá. Další informace najdete v části Kontejner: Formulář . Skupinový rámeček také ořízne libovolnou část ovládacího prvku, který se vysadí z okrajů panelu.

Na rozdíl od ovládacího prvku panel nemá pole skupiny možnost posouvání obsahu a zobrazení posuvníků.

Formulář Windows s panelem a polem skupiny

Kontejner: Rozložení toku

Ovládací prvek FlowLayoutPanel uspořádá jeho obsah ve vodorovném nebo svislém směru toku. Obsah ovládacího prvku můžete zabalit z jednoho řádku na další nebo z jednoho sloupce na další. Případně můžete místo obalení jeho obsahu vystřihnout.

Směr toku můžete určit nastavením hodnoty vlastnosti FlowDirection. Ovládací prvek FlowLayoutPanel správně obrátí směr toku v rozloženích zprava doleva (RTL). Můžete také určit, zda je obsah ovládacího prvku FlowLayoutPanel zabalený nebo oříznutý nastavením hodnoty vlastnosti WrapContents.

FlowLayoutPanel ovládací prvek automaticky mění velikost podle svého obsahu, když nastavíte vlastnost AutoSize na true. Poskytuje také vlastnost podřízeným ovládacím prvkům FlowBreak . Nastavení hodnoty vlastnosti FlowBreak způsobí, že ovládací prvek true přestane rozmisťovat ovládací prvky v aktuálním směru toku a přejde na další řádek nebo sloupec.

Formulář Windows s dvěma ovládacími prvky panelu toku.

Výše uvedený obrázek obsahuje dva FlowLayoutPanel ovládací prvky s BorderStyle vlastností nastavenou pro předvedení hranic ovládacího prvku.

Kontejner: Rozložení tabulky

Ovládací prvek TableLayoutPanel uspořádá jeho obsah do mřížky. Vzhledem k tomu, že rozložení se provádí v době návrhu i v době běhu, může se dynamicky měnit při změně prostředí aplikace. To dává ovládacím prvkům na panelu možnost proporcionálně změnit velikost, aby mohly reagovat na změny, jako je změna velikosti nadřazeného ovládacího prvku nebo změna délky textu kvůli lokalizaci.

Libovolný ovládací prvek Windows Forms může být podřízený ovládacímu prvku TableLayoutPanel, včetně jiných instancí TableLayoutPanel. Díky tomu můžete vytvářet sofistikovaná rozložení, která se přizpůsobí změnám za běhu.

Směr rozšíření (vodorovně nebo svisle) můžete řídit také po TableLayoutPanel tom, co je ovládací prvek plný podřízených ovládacích prvků. Ve výchozím nastavení se TableLayoutPanel ovládací prvek rozbalí směrem dolů přidáním řádků.

Velikost a styl řádků a sloupců můžete řídit pomocí RowStyles a ColumnStyles vlastností. Vlastnosti řádků nebo sloupců můžete nastavit jednotlivě.

Ovládací TableLayoutPanel prvek přidá do podřízených ovládacích prvků následující vlastnosti: Cell, Column, Row, ColumnSpan, a RowSpan.

Formulář Windows s ovládacím prvku rozložení tabulky.

Výše uvedený obrázek obsahuje tabulku s CellBorderStyle vlastností nastavenou tak, aby demonstrovala hranice každé buňky.

Kontejner: Rozdělení kontejneru

Ovládací prvek Windows Forms SplitContainer si můžete představit jako složený ovládací prvek. Jedná se o dva panely oddělené pohyblivým pruhem. Když je ukazatel myši nad pruhem, ukazatel změní obrazec tak, aby zobrazoval, že je pruh pohyblivý.

Pomocí SplitContainer ovládacího prvku můžete vytvářet složitá uživatelská rozhraní; výběr na jednom panelu často určuje, které objekty se zobrazují na druhém panelu. Toto uspořádání je účinné pro zobrazování a procházení informací. Mít dva panely umožňuje agregovat informace v různých částech a lišta neboli „rozdělovač“ usnadňuje uživatelům změnu velikosti panelů.

Formulář Windows s vnořeným rozděleným kontejnerem.

Výše uvedený obrázek obsahuje rozdělený kontejner pro vytvoření levého a pravého podokna. Pravé podokno obsahuje druhý rozdělený kontejner, který je nastaven na OrientationVertical. Vlastnost BorderStyle je nastavena tak, aby demonstrovala hranice každého panelu.

Kontejner: Ovládací prvek Tab

Zobrazí TabControl více karet, podobné rozdělovačům v poznámkovém bloku nebo štítkům v sadě složek v kartotéce. Karty můžou obsahovat obrázky a další ovládací prvky. Pomocí ovládacího prvku Tab můžete vytvořit typ vícestránkového dialogového okna, které se zobrazí na mnoha místech v operačním systému Windows, například Ovládací panely a nastavení zobrazení. Kromě toho lze TabControl použít k vytvoření stránek vlastností, které slouží k nastavení skupiny souvisejících vlastností.

Nejdůležitější vlastností TabControl je TabPages, které obsahuje jednotlivé karty. Každá individuální karta je objekt TabPage.

Formulář Windows s ovládacím prvkem tabulátoru se dvěma záložkami.