Speciális Winforms programozása a C # -ben

Ebben a C # programozási oktatóprogramban a fejlett vezérlőelemekre, például a ComboBoxes, a rácsok és a ListViews elemzésekre fogok koncentrálni, és megmutatom, hogyan fogja valószínűleg használni őket. Csak egy későbbi bemutatóig érkeztem meg az adatokhoz és a kötéshez. Kezdjük egy egyszerű vezérléssel, a ComboBox-tal.

A kombináció középpontjában egy elemgyűjtemény található, és a legegyszerűbb módja annak kitöltésére, ha egy kombót dob ​​a képernyőre, és válassza a tulajdonságokat (ha nem látja a tulajdonság ablakokat, kattintson a Felül a menüben, majd a Tulajdonságok ablakban a Nézet elemre), keresse meg az elemeket és kattintson az ellipszisre gomb. Ezután beírhatja a karakterláncokat, lefordíthatja a programot, és húzza le a kombinációt a választások megtekintéséhez.

Most állítsa le a programot, és adjon hozzá néhány további számot: négy, öt.. tízig. A futtatáskor csak a 8-at fogja látni, mert ez a MaxDropDownItems alapértelmezett értéke. Nyugodtan állítsa 20-ra vagy 3-ra, majd futtassa, hogy megnézze, mit csinál.

instagram viewer

Bosszantó, hogy amikor megnyitja, azt mondja: comboBox1, és szerkesztheti. Nem ezt akarjuk. Keresse meg a DropDownStyle tulajdonságot, és változtassa meg a DropDown-ot DropDownList-re. (Ez egy kombináció!). Most nincs szöveg, és nem is szerkeszthető. Kiválaszthat egyet a számok közül, de mindig üresen nyílik meg. Hogyan válasszuk ki az első számot? Nos, ez nem olyan tulajdonság, amelyet a tervezéskor beállíthat, de ennek a sornak a hozzáadásával ez megtörténik.

Adja hozzá ezt a sort az Form1 () konstruktorhoz. Meg kell nézni az űrlap kódját (a Megoldáskezelőben kattintson a jobb gombbal a From1.cs elemre, majd a Kód megtekintése elemre. Keresse meg az InitializeComponent () elemet; és azonnal hozzáadja ezt a sort.

Ha a DropDownStyle tulajdonságot a kombóhoz Egyszerűre állítja és a programot futtatja, akkor semmit sem kap. Nem választja ki, nem kattint, vagy nem válaszol. Miért? Mivel a tervezéskor meg kell ragadnia az alsó feszítő fogantyút, és az egész vezérlőt magasabbra kell helyezni.

A 2. példában átneveztem a ComboBox-ot combo-ra, megváltoztattam a DropDownStyle combo-t DropDown-ra, hogy szerkeszthető legyen, és hozzáadtam a btnAdd nevű Add gombot. Kettős kattintással a Hozzáadás gombra hoztam létre egy eseményt, a btnAdd_Click () eseménykezelőt, és hozzáadtam ezt az esemény sort.

A program futtatásakor írjon be egy új számot, mondja ki a Tizenegy elemet, majd kattintson a Hozzáadás gombra. Az eseménykezelő veszi a beírt szöveget (kombináltan. Szöveg), és hozzáadja azt a Combo cikkek gyűjteményéhez. Kattintson a Combo-ra, és most új bejegyzésünk van a Eleven. Így adhat hozzá egy új karakterláncot a Combo-hoz. Az egyik eltávolítása kissé bonyolultabb, mivel meg kell találnia az eltávolítani kívánt karakterlánc indexét, majd el kell távolítania. Az alább bemutatott RemoveAt módszer egy gyűjtési módszer erre a célra. csak meg kell határoznia, melyik elemet kell eltávolítani az Removeindex paraméterben.

eltávolítja a karakterláncot az RemoveIndex pozícióban. Ha n elem van a kombinációban, akkor az érvényes értékek 0 és n-1 között vannak. 10 elem esetén a 0..9 értékek.

Ha nem találja a szöveget, akkor -1-et ad vissza, különben a karakterlánc 0-alapú indexét adja vissza a kombinált listában. Van még egy túlterhelt módszer a FindStringExact számára, amely lehetővé teszi annak megadását, ahonnan indítja a keresést, így kihagyhatja az elsőt, stb., Ha van másolata. Ez hasznos lehet a másolatok eltávolításáért a listából.

A btnAddMany_Click () gombra kattintva törli a szöveget a kombinációból, majd törli a kombinált tételek tartalmát, majd összehívja. AddRange (az értékek tömbéből származó karakterláncok hozzáadásához). Ezt követően beállítja a kombó SelectedIndex értékét 0-ra. Ez megmutatja a kombináció első elemét. Ha elemeket ad hozzá vagy töröl egy ComboBox-ban, akkor a legjobb, ha nyomon követi, melyik elem van kiválasztva. A SelectedIndex -1 értékre állítása elrejti a kiválasztott elemeket.

A Tételek hozzáadása gomb törli a listát, és hozzáad 10 000 számot. Én hozzáadtam kombinált. A BeginUpdate () és a combo, az EndUpdate () felhívja a hurkot, hogy megakadályozzuk a Windows villogását, amely megpróbálja frissíteni a vezérlőt. Három éves számítógépemen alig egy másodpercbe telik, hogy 100 000 számot felvegyenek a kombinációba.

Ez egy praktikus vezérlés a táblázatos adatok rács bonyolultsága nélküli megjelenítéséhez. Megjelenítheti az elemeket nagy vagy kicsi ikonként, függőleges listában lévő ikonok listájaként, vagy leghatékonyabban rács elemeinek és részelemeinek listájaként, és ezt itt fogjuk megtenni.

Miután a listView-t egy űrlapra dobta, kattintson az oszlopok tulajdonságára, és adjon hozzá 4 oszlopot. Ezek a TownName, X, Y és Pop lesznek. Állítsa be az egyes ColumnHeader szövegét. Ha nem látja a fejléceket a ListView-ban (miután mind a 4-et hozzáadta), állítsa a ListView View tulajdonságát részletekre. Ha megtekinti a példa kódját, akkor keresse meg a Windows Form Designer kódját, és bontsa ki azt a régiót, amelyben megjelenik a ListView létrehozó kód. Hasznos megnézni a rendszer működését, és másolhatja ezt a kódot, és saját maga is használhatja.

Az oszlopok szélességét kézzel állíthatja be, ha a kurzort a fejléc fölé viszi és húzza. Vagy megteheti a látható kódban, miután kibővítette az űrlaptervező régiót. A következő kódot kell látnia:

A népesség oszlop esetében a kód változásai a tervezőben tükröződnek, és fordítva. Vegye figyelembe, hogy még ha a Zárolt tulajdonságot is igazra állítja, ez csak a tervezőt érinti, és futás közben átméretezheti az oszlopokat.

A ListViews számos dinamikus tulajdonsággal rendelkezik. Kattintson a (Dinamikus tulajdonságok) elemre, és jelölje be a kívánt tulajdonságot. Ha egy tulajdonságot dinamikusként állít be, akkor létrehoz egy XML .config fájlt, és hozzáadja azt a Megoldáskezelőhöz.

Az egyik dolog a tervezéskor végrehajtott változtatások végrehajtása, de ezt tényleg meg kell tennünk, amikor a program fut. A ListView 0 vagy több elemből áll. Minden elemnek (a ListViewItem) van egy szöveges tulajdonsága és egy alrendszer-gyűjteménye. Az első oszlopban az elem szövege látható, a következő oszlopban a SubItem [0] .text, majd SubItem [1] .text és így tovább.

Gombot adtam hozzá egy sor hozzáadásához és egy szerkesztőmezőt a városnévhez. Írjon be bármilyen nevet a mezőbe, és kattintson a Sor hozzáadása elemre. Ez új sort ad a ListView-hoz, a város nevével az első oszlopban és a következő három oszlopban ([0..2] alelemek) véletlenszerű számokkal vannak feltöltve (karakterláncokká konvertálva) azáltal, hogy hozzáadják ezeket a karakterláncokat őket.

Most állítsa a ListView Multiselect tulajdonságot hamis értékre. Egyszerre csak egy elemet akarunk kiválasztani, bár ha egyszerre többet szeretne eltávolítani, akkor hasonló, kivéve, ha fordítva kell áthúznia. (Ha normál sorrendben hurkol és törli az elemeket, akkor a következő elemek szinkronban vannak a kiválasztott indexekkel.)

A jobb egérgombbal működő menü még nem működik, mivel nincsenek megjeleníthető menüelemek. Tehát kattintson a jobb gombbal a PopupMenu-ra (az űrlap alatt), és látni fogja, hogy a Context Menu megjelenik az űrlap tetején, ahol a normál menüszerkesztő jelenik meg. Kattintson rá és írja be, írja be az Elem eltávolítása elemet. A tulajdonságok ablakban megjelenik egy MenuItem, aminek átnevezése az mniRemove elemre vált. Kattintson duplán erre a menüelemre, és megkapja a menuItem1_Click eseménykezelő kód funkciót. Adja hozzá ezt a kódot, hogy így néz ki.

Ha elfelejti látni az Eltávolítás elemet, kattintson a Designer űrlapon csak a PopupMenu vezérlőre. Ez visszahozza a nézetet.

Ha azonban futtatja, és nem ad hozzá elemet, és kiválasztja, akkor a jobb egérgombbal kattintva a menü elérésekor és az Elem eltávolítása elemre kattintva kivételt fog adni, mivel nincs kiválasztott elem. Ez rossz programozás, tehát a következőképpen javíthatja ki. Kattintson duplán a felbukkanó eseményre, és adja hozzá ezt a kódot.

Az DataGridView egyaránt a legbonyolultabb és a leghasznosabb elem, amelyet ingyenesen biztosít a C #. Mindkét adatforrással (azaz adatbázisból származó adatokkal) és anélkül is működik (azaz olyan adatokkal, amelyeket programozottan ad hozzá). Az oktatóprogram fennmaradó részében megmutatom, hogy adatforrások nélkül használja-e. Az egyszerűbb megjelenítési igényekhez megfelelő sima ListView-t találhat.

Ha egy régebbi DataGrid vezérlőt használt, akkor ez csak egy a szteroidokkal szemben: ez több beépített oszloptípust biztosít, és belső és külső adatok, a kijelző (és események) testreszabása és több ellenőrzést ad a cellakezelés felett a fagyasztó sorokkal és oszlopok.

Ha rácsadatokkal tervez űrlapokat, a leggyakoribb különféle oszloptípusok megadása. Lehet, hogy az egyik oszlopban jelölőnégyzetek vannak, csak az olvasható vagy a szerkeszthető szöveg egy másikban, valamint a kurzusok száma. Ezeket az oszloptípusokat általában különbözõen igazítják a számok általában jobbra igazítva, tehát a tizedes pontok egyenesen állnak. Oszlopszinten választhat a Gomb, a jelölőnégyzet, a ComboBox, a Kép, a TextBox és a Linkek közül. ha ezek nem elégek, meghatározhatja a saját egyedi típusait.

Oszlopok hozzáadásának legegyszerűbb módja az IDE-ben történő tervezés. Mint korábban láttuk, ez csak kódot ír neked, és ha már néhányszor megtette, akkor inkább saját maga adja hozzá a kódot. Ha ezt már néhányszor megtette, betekintést nyújt arra, hogyan kell programozni.

Kezdjük néhány oszlop hozzáadásával, ejtsünk egy DataGridView-t az űrlapra, és kattintsunk a jobb felső sarokban lévő kis nyílra. Ezután kattintson az Oszlop hozzáadása elemre. Csináld ezt háromszor. Megjelenik az Oszlop hozzáadása párbeszédpanel, ahol beállíthatja az oszlop nevét, az oszlop tetején megjelenítendő szöveget, és kiválaszthatja annak típusát. Az első oszlop a YourName, és ez az alapértelmezett TextBox (dataGridViewTextBoxColumn). Állítsa be a fejléc szövegét a nevére is. Készítse el a második oszlopot Age és használja a ComboBox-ot. A harmadik oszlop megengedett, és egy CheckBox oszlop.

A mindhárom összeadása után három oszlop sorát kell látnia, amelynek középső részén egy kombináció (életkor) és egy jelölőnégyzet található az Engedélyezett oszlopban. Ha rákattint a DataGridView elemre, akkor a tulajdonságfelügyelőben keresse meg az oszlopokat, és kattintson a (gyűjtemény) elemre. Ekkor megjelenik egy párbeszédpanel, ahol az egyes oszlopokhoz tulajdonságokat állíthat be, például az egyes cellák színeit, az eszköztipp szöveget, a szélességet, a minimális szélességet stb. Ha fordítja és futtatja, észreveszi, hogy megváltoztathatja az oszlopszélességet és a futási időt. A DataGridView fő tulajdonságfelügyelőjében beállíthatja az AllowUser számára, hogy hamisítsák az Oszlopok méretét, hogy ezt megakadályozzák.

Sorokat fogunk hozzáadni a DataGridView vezérlőhöz kódban, és a példákban szereplő ex3.cs fájl rendelkezik ezzel a kóddal. Kezdve egy TextEdit mező, egy ComboBox és egy gomb hozzáadásával az űrlaphoz, amelyen a DataGridView látható. Állítsa a DataGridView tulajdonságot az AllowUserto AddRows értékre hamisra. Címkéket is használok, és a combobox cbAges, a btnAddRow és a TextBox tbName gombokat hívom. Hozzáadtam egy Bezárás gombot az űrlaphoz, és duplán rákattintottam egy btnClose_Click eseménykezelő váz létrehozására. A Bezárás () szó hozzáadásával ez működik.

Alapértelmezés szerint a Hozzáadás sor gombra engedélyezett tulajdonság hamisként van beállítva a startkor. Csak akkor szeretnénk sorokat hozzáadni a DataGridView-hoz, hacsak nincs szöveg a Név TextEdit Név mezőben és a ComboBox-ban sem. Készítettem a CheckAddButton metódust, majd létrehoztam egy Leave eseménykezelőt a Névszöveg szerkesztési mezőhöz, dupla kattintással a Properties menüben a Leave szó mellett, amikor az eseményeket jelenítette meg. A Tulajdonságok mező ezt mutatja a fenti képen. Alapértelmezés szerint a Tulajdonságok mezőben megjelennek a tulajdonságok, de az eseménykezelők a villámlás gombra kattintva láthatók.

Ehelyett használhatta volna a TextChanged eseményt, bár ez a CheckAddButton () módszer minden gombnyomásra, nem pedig amikor a vezérlést elhagyják, azaz amikor egy másik vezérlés elnyer fókusz. Az Ages Combo alkalmazásban a TextChanged eseményt használtam, de a tbName_Leave eseménykezelőt választottam a dupla kattintás helyett egy új eseménykezelő létrehozásához.

Nem minden esemény kompatibilis, mivel egyes események további paramétereket szolgáltatnak, de ha lát egy korábban létrehozott kezelőt, akkor igen, használhatja. Leginkább preferencia kérdése, minden vezérléshez rendelkezhet külön eseménykezelővel eseménykezelők használata vagy megosztása (mint én), amikor közös eseményaláírással rendelkeznek, azaz a paraméterek a azonos.

A DataGridView összetevőt átneveztem a dGView-hez a rövidség érdekében, és duplán kattintottam az AddRow-ra, hogy létrehozzam egy eseménykezelő csontvázat. Az alábbi kód hozzáad egy új üres sort, megkapja a sorok indexét (ez a RowCount-1, ahogy éppen hozzáadtuk, és a RowCount 0 alapú), majd az indexén keresztül fér hozzá ehhez a sorhoz, és beállítja az adott sor celláinak értékeit a YourName és az oszlopokhoz Kor.

Az űrlap megtervezésekor gondoljon a konténerekre és a kezelőszervekre, valamint arra, hogy melyik ellenőrző csoportokat kell együtt tartani. A nyugati kultúrákban az emberek balról jobbra és jobbra lent olvasnak, így könnyebben olvashatók így.

A tartály bármelyik vezérlőelem, amely más vezérlőket tartalmazhat. Az Eszköztárban találhatók a Panel, a FlowLayoutpanel, SplitContainer, TabControl és TableLayoutPanel. Ha nem látja az eszköztárat, használja a Nézet menüt, és megtalálja. A konténerek együtt tartják a kezelőszerveket, és ha mozgatja vagy átméretezi a tartályt, ez befolyásolja a kezelőszervek elhelyezkedését. Csak mozgassa a vezérlőket a konténer fölött az Űrlaptervezőben, és rájön, hogy a konténer most felelős.

A panel hasonló a GroupBox-hoz, de a GroupBox nem tud görgetni, de feliratot jeleníthet meg, alapértelmezés szerint szegéllyel rendelkezik. A paneleknek lehetnek szegélyei, de alapértelmezés szerint nem. Azért használom a GroupBoxokat, mert szépen néznek ki, és ez azért fontos, mert:

A panelek praktikusak a konténerek csoportosításához is, így lehet, hogy két vagy több GroupBox van a panelen.

Itt egy tipp konténerekkel való munkához. Dobjon el egy osztott konténert egy űrlapra. Kattintson a bal oldali panelen, majd a jobb oldalon. Most próbálja meg eltávolítani a SplitContainer-et az űrlapból. Nehéz addig, amíg a jobb egérgombbal kattint az egyik panelen, majd a Select SplitContainer1 kiválasztására kattint. Miután kiválasztotta, törölheti. Egy másik módszer, amely az összes vezérlőegységre és konténerre vonatkozik nyomja meg az Esc gombot a szülő kiválasztásához.

A konténerek egymás belsejében is fészkelhetnek. Csak húzzon egy kicsit a nagyobb tetejére, és rövid időre megjelenik egy vékony függőleges vonal, amely megmutatja, hogy az egyik a másikban van. A szülőkonténer húzásakor a gyermek mozgatható vele. Az 5. példa ezt mutatja. Alapértelmezés szerint a világosbarna panel nem található a tartályban, tehát amikor a mozgatás gombra kattint, a GroupBox átkerül, de a panel nem. Most húzza a panelt a GroupBox fölé, hogy teljesen a Groupbox belsejében legyen. Ha ezúttal lefordítja és futtatja, akkor a Mozgatás gombra kattintással mindkettő együtt mozog.

A TableLayoutpanel érdekes tároló. Ez egy olyan táblázati struktúra, amely úgy van felépítve, mint egy 2D cellás rács, ahol minden cellában csak egy vezérlő található. Egy cellában csak egy vezérlő lehet. Megadhatja, hogy a táblázat miként növekszik, amikor további vezérlőelemeket adnak hozzá, vagy akkor is, ha nem növekszik. Úgy tűnik, hogy HTML-tábla modellezett, mert a cellák oszlopok vagy sorok átfedését eredményezhetik. Még a gyermek kezelõszerveinek rögzítési viselkedése is a tartályban függ a Margó és a Padding beállításoktól. A horgonyokról a következő oldalon olvashatunk bővebben.

Az Ex6.cs példában egy alapvető két oszloptáblával kezdtem, amelyet a Vezérlő és sor stílus párbeszédpanelen adtam meg (válassza ki a vezérlőt, és kattintson a kis jobb oldali mutató háromszög a jobb felső sarokban, hogy megtekintse a feladatok listáját és kattintson az utolsóra), hogy a bal oszlop 40% -a, a jobb oszlop 60% -a szélesség. Ez lehetővé teszi az oszlopszélesség meghatározását abszolút képpontban, százalékban, vagy hagyhatja, hogy az automatikus méretű legyen. A párbeszédpanel gyorsabb eléréséhez kattintson a Tulajdonságok ablak oszlopok melletti Gyűjteményre.

Felvettem egy AddRow gombot, és a GrowStyle tulajdonságot az alapértelmezett AddRows értékkel hagytam. Amikor az asztal megtelik, újabb sort ad hozzá. Alternatív megoldásként beállíthatja értékeit AddColumns és FixedSize értékre, így az nem növekszik tovább. Az Ex6 esetén, amikor rákattint a Vezérlők hozzáadása gombra, háromszor meghívja az AddLabel () metódust és az AddCheckBox () metódust. Minden módszer létrehozza a vezérlés egy példányát, majd meghívja a tblPanel. Controls. Add () A második vezérlő hozzáadása után a harmadik vezérlők növelik a táblázat növekedését. A kép azt mutatja, miután egyszer megnyomta a Vezérlő hozzáadása gombot.

Ha kíváncsi, hogy honnan származnak az alapértelmezett értékek az AddCheckbox () és AddLabel () metódusokban, amelyeket hívok, akkor a vezérlés eredetileg manuálisan hozzáadva a tervező táblázatához, majd a létrehozáshoz és az inicializáláshoz használt kódot ebből másolták vidék. Az inicializálási kódot az InitializeComponent módszerhívásban találja meg, ha az alábbi régió bal oldalán található + gombra kattint:

Egyszerre több vezérlőt is kiválaszthat, ha lenyomva tartja a Shift billentyűt, amikor kiválasztja a második és az azt követő vezérlőket, akár különféle típusú vezérlőket is. A Tulajdonságok ablak csak azokat a tulajdonságokat jeleníti meg, amelyek mindkettő számára közösek, így beállíthatja őket azonos méretű, színű és szövegmezőbe stb. Még ugyanazok az eseménykezelők rendelhetők több vezérlőhöz.

A felhasználástól függően egyes formákat a felhasználó gyakran átméretez. Semmi sem néz ki rosszabb, mint az űrlap átméretezése és a vezérlők azonos helyzetben tartása. Minden vezérlőelem rendelkezik olyan horgonyokkal, amelyek lehetővé teszik, hogy "rögzítsék" őket a 4 élhez úgy, hogy a vezérlőelem mozogjon vagy kinyúlik, amikor egy csatolt él mozgatásra kerül. Ez a következő viselkedéshez vezet, amikor az űrlapot a jobb széltől kinyújtják:

Az olyan gombokhoz, mint a Bezárás, amelyek hagyományosan vannak a jobb alsó sarokban, a 3. viselkedésre van szükség. A ListViews és a DataGridViews akkor a legjobb 2-nél, ha az oszlopok száma elegendő az űrlap túlcsordulásához és görgetésre szorul). Az alapértelmezett a felső és a bal horgony. A Tulajdonságok ablakban van egy apró kis szerkesztő, amely úgy néz ki, mint az Anglia zászló. Csak kattintson a sávok bármelyikére (két vízszintes és két függőleges) a megfelelő horgony beállításához vagy törléséhez, a fenti ábra szerint.

Az egyik olyan tulajdonság, amely nem sokat említ, a Tag tulajdonság, mégis hihetetlenül hasznos lehet. A Tulajdonságok ablakban csak szöveget rendelhet, de a kódjában bármilyen érték lehet, amely az Objektumtól származik.

A Tag segítségével egész objektumot tartottam, miközben csak néhány tulajdonságát mutattam be egy ListView-ban. Lehet, hogy csak azt szeretné, hogy az Ügyfél neve és száma megjelenjen az Ügyfél-összefoglaló listában. De kattintson a jobb gombbal a kiválasztott vevőre, majd nyisson meg egy űrlapot az összes vevő adataival. Ez akkor könnyű, ha az ügyféllistát úgy állítja össze, hogy elolvassa az összes ügyfél adatait a memóriában és hozzárendel egy hivatkozást az ügyfélosztály objektumához a címkében. Minden vezérlőnek van egy Címkéje.

A TabControl praktikus módja az űrlapmegtakarításnak, ha több füllel rendelkezik. Minden lapnak lehet ikonja vagy szövege, és bármilyen fület kiválaszthat, és megjelenítheti annak vezérlőit. A TabControl egy tároló, de csak a Tablapokat tartalmazza. Minden TabPage olyan tároló, amelyhez normál vezérlőelemek is hozzáadhatók.

Az x7.cs példában létrehoztam egy kétlapos laplapot, amelynek első lapján a Vezérlők három gombbal és egy jelölőnégyzettel vannak ellátva. A második lap oldala Naplók, és az összes olyan naplózott művelet megjelenítésére szolgál, amely magában foglalja a gombra kattintást vagy a jelölőnégyzet bekapcsolását. A Log () nevű módszert hívjuk meg minden egyes kattintás stb. Naplózására. Hozzáadja a mellékelt karakterláncot a ListBox-hoz.

Két jobb oldali kattintással felbukkanó menüt is hozzáadtam a TabControlhoz a szokásos módon. Először adjon hozzá egy ContextMenuStrip-et az űrlaphoz, és állítsa be a TabControl ContextStripMenu tulajdonságában. A két menüpont az Új oldal hozzáadása és az Oldal eltávolítása. Az oldal eltávolítását azonban korlátoztam, így csak az újonnan hozzáadott lapok távolíthatók el, és nem az eredeti két.

Ez könnyű, csak hozzon létre egy új lapot, adjon neki szöveges feliratokat a fülre, majd adja hozzá a TabSpace gyűjteményhez, a TabsControl

Az oldal eltávolítása csak a TabPages felhívása. RemoveAt (), a lapok segítségével. SelectedIndex az aktuálisan kiválasztott lap eléréséhez.

Ebben az oktatóanyagban láttuk, hogy a kifinomultabb vezérlők hogyan működnek, és hogyan lehet őket használni. A következő oktatóanyagban folytatom a GUI témát, megnézem a háttérben dolgozó szálat, és megmutatom, hogyan kell használni.