Megosztás:


Vezérlők elhelyezése és elrendezése

A Windows Formsban a vezérlő elhelyezését nem csak a vezérlő határozza meg, hanem a vezérlő szülője is. Ez a cikk a vezérlők által biztosított különböző beállításokat és az elrendezést befolyásoló szülőtárolók különböző típusait ismerteti.

Rögzített pozíció és méret

A vezérlőelem szülőfelületen megjelenő pozícióját a szülőfelület bal felső részén lévő Location tulajdonság értéke határozza meg. A vezérlőelem bal felső pozíciókoordinátája a szülőben (x0,y0). A vezérlő méretét a Size tulajdonság határozza meg, és a vezérlőelem szélességét és magasságát jelöli.

A vezérlő helye a tárolóhoz viszonyítva

Ha olyan vezérlőt ad hozzá egy szülőhöz, amely automatikus elhelyezést kényszerít ki, a vezérlő pozíciója és mérete megváltozik. Ebben az esetben előfordulhat, hogy a vezérlő pozíciója és mérete nem módosítható manuálisan a szülő típusától függően.

A MaximumSize és MinimumSize tulajdonságok segítenek beállítani a vezérlő által használható minimális és maximális helyet.

Margó és kitöltés

Két vezérlőtulajdonság van, amelyek segítenek a vezérlők pontos elhelyezésében: Margin és Padding.

A Margin tulajdonság határozza meg azt a területet a vezérlő körül, amely más vezérlők számára meghatározott távolságot tart a vezérlő szegélyétől.

A Padding tulajdonság határozza meg a vezérlőelem belső terét, amely a vezérlő tartalmát (például a Text tulajdonság értékét) a vezérlőelem szegélyétől meghatározott távolságban tartja.

Az alábbi ábra egy Margin vezérlőelem tulajdonságait és Padding tulajdonságait mutatja be.

Padding és margin tulajdonságok Windows Forms vezérlők számára

A Visual Studio Designer a vezérlők elhelyezésekor és átméretezésekor tiszteletben tartja ezeket a tulajdonságokat. A illesztővonalak segédvonalakként jelennek meg, amelyek segítenek a vezérlőelem megadott margóján kívül maradni. A Visual Studio például akkor jeleníti meg a illesztővonalat, ha egy vezérlőt egy másik vezérlő mellé húz:

A Windows Forms .NET margótulajdonságaival rendelkező illesztővonalakat bemutató animált kép a Visual Studióban

Automatikus elhelyezés és méret

A vezérlők automatikusan elhelyezhetők a szülőjükben. Egyes szülőtárolók kényszerítik az elhelyezést, míg mások betartják az elhelyezést vezérlő beállításokat. A vezérlőelemeken két tulajdonság található, amelyek segítik az automatikus elhelyezést és méretezést a szülőelemen belül: Dock és Anchor.

A rajzrend hatással lehet az automatikus elhelyezésre. A vezérlő rajzolásának sorrendjét a szülő Controls gyűjteményében lévő vezérlőindex határozza meg. Ez az index az úgynevezett Z-order. Minden vezérlőelem fordított sorrendben jelenik meg a gyűjteményben. Ez azt jelenti, hogy a gyűjtemény egy első az utolsó húzott és az utolsó az elsőben rajzolt gyűjtemény.

A MinimumSize és MaximumSize tulajdonságok segítenek beállítani a vezérlő által használható minimális és maximális helyet.

Dokk

A Dock tulajdonság meghatározza, hogy a vezérlőelem melyik szegélye igazodik a szülő megfelelő oldalához, és hogyan méretezhető át a vezérlőelem a szülőn belül.

Windows-űrlap dokkbeállításokat tartalmazó gombokkal.

Egy vezérlő rögzítésekor a tároló határozza meg a foglalandó helyet, és átméretezi és elhelyezi a vezérlőt. A vezérlő szélessége és magassága továbbra is a rögzítési stílustól függ. Ha például a vezérlő felülre van rögzítve, a Height tulajdonság megmarad, de a Width automatikusan módosul. Ha egy vezérlő balra van rögzítve, a Width érték kerül tiszteletben tartásra, de a Height automatikusan módosul.

A Location vezérlő nem állítható be manuálisan, mert a dokkolás automatikusan meghatározza a pozíciót.

A Z-order a vezérlésnél valóban hatással van a dokkolásra. A dokkolt vezérlők elrendezése során a rendelkezésre álló területet használják. Ha például egy vezérlőt először rajzolnak meg, és felülre rögzítenek, az a tároló teljes szélességét elfoglalja. Ha egy következő vezérlő balra van rögzítve, kevesebb függőleges terület áll rendelkezésére.

Windows felület balra és felül rögzített gombokkal, ahol a felső nagyobb.

Ha a vezérlő Z-order fel van cserélve, akkor a bal oldalhoz rögzített vezérlőnek több kezdeti hely áll rendelkezésére. A vezérlő a tároló teljes magasságát használja. A felülre rögzített vezérlőnek kevesebb vízszintes helye van.

Windows-űrlap balra és felülre rögzített gombokkal, a bal oldalon pedig nagyobb.

A tároló növekedésével és zsugorításával a tárolóhoz rögzített vezérlők áthelyezve és átméretezve lesznek a megfelelő pozícióik és méretük megtartása érdekében.

Az összes pozícióban rögzített gombokat tartalmazó Windows-űrlap átméretezését bemutató animáció.

Ha több vezérlő van rögzítve a tároló ugyanazon oldalához, azok a saját Z-order értékeik szerint vannak egymásra helyezve.

Windows-űrlap két gombbal balra rögzítve.

Horgony

A vezérlő rögzítése lehetővé teszi, hogy a vezérlőt a szülőtároló egy vagy több oldalához kösse. A tároló méretének változása során a fixált gyermekvezérlők megtartják a rögzített oldaltól való távolságukat.

A vezérlők egy vagy több oldalhoz rögzíthetők korlátozás nélkül. A horgony a Anchor tulajdonsággal van beállítva.

Animáció, amely bemutatja, hogyan méretezhető át a Windows-űrlap minden pozícióban rögzített gombokkal.

Automatikus méretezés

A AutoSize tulajdonság lehetővé teszi a vezérlőelem számára, hogy szükség esetén módosítsa a méretét a tulajdonság által PreferredSize megadott méretnek megfelelően. A tulajdonság beállításával módosíthatja az egyes vezérlők méretezési viselkedését AutoSizeMode .

A tulajdonságot csak bizonyos vezérlők támogatják AutoSize . Emellett néhány, a AutoSize tulajdonságot támogató vezérlő támogatja a AutoSizeMode tulajdonságot is.

Mindig igaz viselkedés Leírás
Az automatikus méretezés futásidejű funkció. Ez azt jelenti, hogy soha nem változtatja meg a vezérlő méretét vagy működését, így nincs további hatása.
Ha egy vezérlőelem mérete megváltozik, a tulajdonság értéke Location mindig állandó marad. Amikor egy vezérlő tartalma növekszik, a vezérlő jobbra és lefelé nő. A vezérlők nem nőnek a bal irányába.
A Dock és Anchor tulajdonságok akkor érvényesülnek, ha AutoSizetrue. A vezérlőelem Location tulajdonságának értéke a megfelelő értékhez van igazítva.

A Label vezérlőelem a szabály alóli kivétel. Ha egy rögzített Label vezérlőelem AutoSize tulajdonságát true értékkel állítja be, a Label vezérlő nem fog nyúlni.
A vezérlőelemek MaximumSize és MinimumSize tulajdonságai mindig érvényesek, függetlenül a AutoSize tulajdonság értékétől. A MaximumSize és MinimumSize tulajdonságokat nem érinti a AutoSize tulajdonság.
Alapértelmezés szerint nincs megadva minimális méret. Ez azt jelenti, hogy ha egy vezérlőelem be van állítva úgy, hogy zsugorodjon AutoSize, és nincs tartalma, akkor a Size tulajdonság értéke (0x,0y). Ebben az esetben a vezérlő egy pontra zsugorodik, és nem lesz látható.
Ha egy vezérlőelem nem implementálja a GetPreferredSize metódust, a metódus a GetPreferredSize tulajdonsághoz Size rendelt utolsó értéket adja vissza. Ez azt jelenti, hogy a AutoSize beállításnak true nincs hatása.
Egy vezérlő egy TableLayoutPanel cellában mindig zsugorodik, hogy elférjen a cellában, amíg el nem éri a MinimumSize-t. Ezt a méretet a rendszer maximális méretként kényszeríti ki. Nem ez a helyzet, ha a cella egy AutoSize sor vagy oszlop része.

AutoSizeMode tulajdonság

A AutoSizeMode tulajdonság részletesebb vezérlést biztosít az alapértelmezett AutoSize viselkedés felett. A AutoSizeMode tulajdonság azt határozza meg, hogy egy vezérlő hogyan méretezheti magát a tartalmához. A tartalom például egy vezérlő vagy egy Button tároló gyermekvezérlőinek szövege lehet.

Az alábbi lista az AutoSizeMode értékeket és azok viselkedését mutatja.

  • AutoSizeMode.GrowAndShrink

    A vezérlő növekszik vagy zsugorodik, hogy magában foglalja annak tartalmát.

    A MinimumSize és MaximumSize értékeket tiszteletben tartják, de a Size tulajdonság jelenlegi értékét figyelmen kívül hagyják.

    Ez ugyanaz a viselkedés, mint a AutoSize tulajdonsággal rendelkező vezérlők és a AutoSizeMode tulajdonság nélküli vezérlők esetében.

  • AutoSizeMode.GrowOnly

    A vezérlő addig nő, ameddig a tartalmát be tudja fogadni, de nem zsugorodik kisebbre a Size tulajdonsága által megadott értéknél.

    Ez a beállítás alapértelmezett értéke AutoSizeMode.

Az AutoSize tulajdonságot támogató vezérlők

Az alábbi táblázat az automatikus méretezési támogatás vezérléssel történő szintjét ismerteti:

Vezérlő AutoSize Támogatott AutoSizeMode Támogatott
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

Automatikus méretezés a tervezőkörnyezetben

Az alábbi táblázat a vezérlőelemek méretezési viselkedését ismerteti a tervezéskor annak és AutoSize tulajdonságainak AutoSizeMode értéke alapján.

SelectionRules A tulajdonság felülbírálása annak meghatározásához, hogy egy adott vezérlő felhasználó által átméretezhető állapotban van-e. A következő táblázatban a "nem lehet átméretezni" azt jelenti, hogy csak Moveable használható, míg az "átméretezhető" azt jelenti, hogy AllSizeable és Moveable is használható.

AutoSize beállítás AutoSizeMode beállítás Magatartás
true A tulajdonság nem érhető el. A felhasználó a tervezéskor nem méretezheti át a vezérlőt, kivéve a következő vezérlőket:

- TextBox
- MaskedTextBox
- RichTextBox
- TrackBar
true GrowAndShrink A felhasználó a tervezéskor nem méretezheti át a vezérlőt.
true GrowOnly A felhasználó a tervezéskor átméretezheti a vezérlőt. Ha a Size tulajdonság be van állítva, a felhasználó csak a vezérlőelem méretét növelheti.
false vagy AutoSize rejtett Nem alkalmazható. A felhasználó a tervezéskor átméretezheti a vezérlőt.

Megjegyzés:

A hatékonyság maximalizálása érdekében a Visual Studio Windows Forms Designere árnyékot vet az AutoSizeForm osztály tulajdonságára. A tervezéskor az űrlap úgy viselkedik, mintha a AutoSize tulajdonság a tényleges beállításától függetlenül lenne beállítva false. Futásidőben nem történik különleges szállás, és a AutoSize szálláshely a tulajdonság beállításának megfelelően lesz alkalmazva.

Tároló: Űrlap

A Form Windows Forms fő objektuma. A Windows Forms-alkalmazásokban általában mindig megjelenik egy űrlap. Az űrlapok vezérlőket tartalmaznak, és a vezérlő Location és Size tulajdonságait a manuális elhelyezés érdekében tiszteletben tartják. Az űrlapok automatikus elhelyezés céljából válaszolnak a Dock tulajdonságra is.

Az űrlapok szélein többnyire olyan fogók vannak, amelyek lehetővé teszik a felhasználó számára az űrlap átméretezését. A Anchor tulajdonsága lehetővé teszi a vezérlőelem számára, hogy növekedjen és szűküljön az űrlap átméretezésekor.

Tároló: Tábla

A Panel vezérlő hasonló egy űrlaphoz, mivel a vezérlők csoportosítására szolgál. Ugyanazokat a manuális és automatikus elhelyezési stílusokat támogatja, mint az űrlapok. További információért tekintse meg a Tároló: Űrlap szakaszt.

A panel zökkenőmentesen illeszkedik a szülő elemhez, és levágja a vezérlőnek azt a területét, amely kiesik a panel határaiból. Ha egy vezérlő kívül esik a panel határain, és AutoScroll be van állítva true, görgetősávok jelennek meg, és a felhasználó görgetheti a panelt.

A csoportmező vezérlőelemtől eltérően a panelek nem rendelkeznek felirattal és szegélyrel.

Windows-űrlap panellel és csoportmezővel.

A fenti képen egy panel látható, amelyen a BorderStyle tulajdonság be van állítva a panel határainak szemléltetésére.

Tároló: Csoportmező

A GroupBox vezérlő azonosítható csoportosítást biztosít más vezérlőkhöz. Általában egy csoportmezővel osztunk fel egy űrlapot függvények szerint. Előfordulhat például, hogy egy űrlap személyes adatokat jelöl, és a címhez kapcsolódó mezők csoportosítva lesznek. Tervezéskor egyszerűen mozgathatja a csoportdobozt a benne található vezérlőkkel együtt.

A csoportmező ugyanazokat a manuális és automatikus elhelyezési stílusokat támogatja, mint az űrlapok. További információért tekintse meg a Tároló: Űrlap szakaszt. A csoportmezők a vezérlők olyan részeit is levágják, amelyek kiesnek a panel határaiból.

A panel vezérlőelemtől eltérően a csoportmezők nem képesek a tartalom görgetésére és a görgetősávok megjelenítésére.

Windows-űrlap panellel és csoportmezővel.

Tároló: Folyamatelrendezés

A FlowLayoutPanel vezérlő vízszintes vagy függőleges irányban rendezi a tartalmát. A vezérlőelem tartalmát az egyik sorból a másikba, vagy az egyik oszlopból a másikba is tördelheti. Vagy másik lehetőségként a tartalom körbefuttatása helyett ki is vághatja.

A folyamat irányát a FlowDirection tulajdonság értékének beállításával adhatja meg. A FlowLayoutPanel vezérlő helyesen megfordítja a folyamat irányát jobbról balra (RTL) elrendezésekben. Azt is megadhatja, hogy a FlowLayoutPanel vezérlőelem tartalma be van-e csomagolva vagy le van-e vágva a WrapContents tulajdonság megadásával.

A FlowLayoutPanel vezérlőelem automatikusan a tartalmára méreteződik, amikor a AutoSize tulajdonságot true-re állítja. Gyermekvezérlőinek emellett egy FlowBreak tulajdonságot is biztosít. Ha a FlowBreak tulajdonság értékét true-re állítja, a FlowLayoutPanel vezérlő leállítja a vezérlők elhelyezését az aktuális folyamatirányban, és a következő sorba vagy oszlopba tördel.

Windows-űrlap két folyamatpanel-vezérlővel.

A fenti képen két FlowLayoutPanel vezérlő található, amelyek tulajdonsága BorderStyle a vezérlőelem határainak szemléltetésére van beállítva.

Tároló: Táblaelrendezés

A TableLayoutPanel vezérlőelem rácsba rendezi a tartalmát. Mivel az elrendezés a tervezéskor és a futási időben is elkészült, az alkalmazáskörnyezet változásával dinamikusan változhat. A panel vezérlői ezáltal arányosan átméretezhetők, így reagálni tudnak az olyan változásokra, mint a szülővezérlő átméretezése vagy a lokalizálás miatti szöveghossz-változás.

Bármely Windows Forms-vezérlő a TableLayoutPanel vezérlőelem gyermeke lehet, beleértve a TableLayoutPanelegyéb példányait is. Ez lehetővé teszi, hogy kifinomult elrendezéseket hozzon létre, amelyek alkalmazkodnak a futásidőben bekövetkező változásokhoz.

A bővítés irányát (vízszintes vagy függőleges) akkor is szabályozhatja, ha a TableLayoutPanel vezérlő tele van gyermekvezérlőkkel. Alapértelmezés szerint a TableLayoutPanel vezérlőelem sorok hozzáadásával lefelé bővül.

A sorok és oszlopok méretét és stílusát a RowStyles és ColumnStyles tulajdonságok használatával szabályozhatja. A sorok vagy oszlopok tulajdonságait egyenként is beállíthatja.

A TableLayoutPanel vezérlőelem a következő tulajdonságokat adja hozzá a gyermekvezérlőihez: Cell, Column, Row, ColumnSpanés RowSpan.

Táblázatelrendezés-vezérlővel rendelkező Windows-űrlap.

A fenti képen egy táblázat látható, amelyben a CellBorderStyle tulajdonság be van állítva az egyes cellák határainak szemléltetésére.

Tároló: Felosztott tároló

A Windows Forms SplitContainer vezérlő összetett vezérlőként is felfogható, két panelből álló, mozgatható sávokkal elválasztva. Ha az egérmutató a sáv felett van, a mutató az alakzatot úgy módosítja, hogy a sáv mozgatható legyen.

A SplitContainer vezérlővel összetett felhasználói felületeket hozhat létre; gyakran az egyik panelen lévő kijelölés határozza meg, hogy milyen objektumok jelenjenek meg a másik panelen. Ez az elrendezés érvényes az információk megjelenítésére és böngészésére. A két panel lehetővé teszi az információk összesítését a területeken, és a sáv vagy a "felosztó" megkönnyíti a felhasználók számára a panelek átméretezését.

Beágyazott felosztott tárolóval rendelkező Windows-űrlap.

A fenti képen egy osztott tároló található, amely bal és jobb oldali panelt hoz létre. A jobb oldali panel egy második felosztott tárolót tartalmaz, ahol a Orientation értéke beállítva van Vertical. A BorderStyle tulajdonság az egyes panelek határainak szemléltetésére van beállítva.

Tároló: Tab vezérlőelem

A TabControl program több lapot jelenít meg, például a jegyzetfüzet elválasztóit vagy a iktatási szekrényben lévő mappákban lévő címkéket. A lapok képeket és egyéb vezérlőket tartalmazhatnak. A tabulátor vezérlővel olyan többoldalas párbeszédpanelt hozhat létre, amely a Windows operációs rendszerben számos helyen jelenik meg, például a Vezérlőpulton és a Megjelenítési tulajdonságokban. Emellett a TabControl tulajdonságlapok létrehozására is használható, amelyek a kapcsolódó tulajdonságok egy csoportjának beállítására szolgálnak.

A TabControl legfontosabb tulajdonsága a TabPages, amely az egyes lapokat tartalmazza. Minden egyes lap egy TabPage objektum.

Két lapfület tartalmazó tabulátorvezérlővel rendelkező Windows-űrlap.