Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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.
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.
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.
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.
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.
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.
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.
Pokud je více ovládacích prvků ukotvených na stejné straně kontejneru, jsou naskládané podle jejich Z-order.
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í.
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 true hodnotu , 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í.
-
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
. -
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í.
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ů.
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.
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
.
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ů.
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.
.NET Desktop feedback