Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
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.
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.
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:
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.
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.
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.
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.
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.
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.
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.
-
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
AutoSizeModetulajdonság nélküli vezérlők esetében. -
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.
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.
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.
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.
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.
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.
.NET Desktop feedback