A C# programozási nyelv

Windows Form programozás

Minden megjelenítésre kerülő osztály a .NET-ben a System.Windows.Forms.Control ősosztályból származik. Ez az ősosztály számos funkciót, property-t és eseményt tartalmaz, így az összes vezérlőnknek azonos lesz az alap funkcionalitása. Van néhány megkülönböztetett vezérlő ami egy a System.Windows.Forms.Control -ból származtatott másik ősosztályból, a System.Windows.Forms.UserControl -ból származik és az a célja, hogy egyedi vezérlők készítését támogassa. Ebben a fejezetben minden osztály a System.Windows.Forms névtérhez tartozik!

Properties: a vezérlők működését az un. tulajdonságaival (property) tudjuk szabályozni. A System.Windows.Forms.Control osztály legfontosabb property -jei:

Anchor Ezzel a property -vel írható le, hogy a vezérlő hogyan viselkedjen, amikor a mérete megváltozik.
BackColor A vezérlő háttérszíne.
Bottom A vezérlő aljának a szülőablakhoz vett relatív helyzete.
Dock A vezérlő dokkolását teszi lehetővé a szülőablak széleihez.
Enabled A vezérlő felhasználói interface -ének engedélyezése.
ForeColor A vezérlő előterének színe.
Height A vezérlő magassága.
Left A vezérlő bal szélének a szülőablakhoz vett relatív helyzete.
Name A vezérlő hivatkozási neve.
Parent A szülőablak referenciája.
Right A vezérlő jobb szélének a szülőablakhoz vett relatív helyzete.
TabIndex A szülőablak tabulátor-sorrendjében vett sorszáma.
TabStop A szülőablakon tabulátorral történő fókusz tiltása.
Tag Tetszőleges adat tárolására szolgáló Object típusú property.
Text A tárolt szöveget tartalmazza.
TextAlign A tárolt szöveget elrendezése.
Top A vezérlő felső szélének a szülőablakhoz vett relatív helyzete.
Visible A vezérlő megjelenítésének engedélyezése.
Width A vezérlő szélessége.

Az eseménykezelés alapvető igényünk. A Control ősosztályban megtalálhatóak a leggyakrabban használt, többnyire általános célú események. A legfontosabbak:

Click Akkor váltódik ki, ha a vezérlőre kattintottak, vagy enter -t nyomtak rajta.
DoubleClick Akkor váltódik ki, ha a vezérlőre duplán kattintottak.
DragDrop Akkor váltódik ki, ha a drag&drop művelet befejeződik.
DragEnter Akkor váltódik ki, ha egy dragged állapotban levő objektum a vezérlő határain belülre kerül.
DragLeave Akkor váltódik ki, ha egy dragged állapotban levő objektum elhagyja a vezérlőt.
DragOver Akkor váltódik ki, ha egy dragged állapotban levő objektum a vezérlő határain belülre mozog.
KeyDown Akkor váltódik ki, ha egy billentyű lenyomásra és felengedésre kerül és a vezérlő jogosult a kezelésére.
KeyPress Akkor váltódik ki, ha egy billentyű lenyomásra kerül és a vezérlő jogosult a kezelésére.
KeyUp Akkor váltódik ki, ha egy billentyű felengedésre kerül és a vezérlő jogosult a kezelésére.
GotFocus Akkor váltódik ki, ha a vezérlő fókuszba kerül.
LostFocus Akkor váltódik ki, ha a vezérlő elveszíti a fókuszt.
MouseDown Akkor váltódik ki, ha egy egérgomb lenyomásra kerül és a vezérlő jogosult a kezelésére (az egérmutató felette van, engedélyezett, stb).
MouseMove Akkor váltódik ki, ha az egér mozog és a vezérlő jogosult a kezelésére (az egérmutató felette van, engedélyezett, stb).
MouseUp Akkor váltódik ki, ha egy egérgomb felengedésre kerül és a vezérlő jogosult a kezelésére (az egérmutató felette van, engedélyezett, stb).
Paint Akkor váltódik ki, ha a vezérlő kirajzolásra kerül.
Validated Közvetlenül azután váltódik ki, ha a vezérlő CausesValidation property -je igaz értéket kap.
Validating Közvetlenül azelőtt váltódik ki, ha a vezérlő CausesValidation property -je igaz értéket kap.

Button

Ha egy gombra gondolunk, valószínűleg egy téglalap alakú gombot képzelünk el, amire rá lehet kattintani, hogy ezáltal elvégezhessünk valamilyen műveletet. Ezt az általános gombot valósítja meg a ButtonBase ősosztályból származtatott Button osztály. Ezen kívül két speciális gomb osztály is származik ugyanebből az ősosztályból, ezek a RadioButton és a CheckBox osztályok.

Fontosabb saját property -k:

FlatStyle A gomb megjelenítését szabályozza.
Image A gombon megjelenítendő kép hivatkozása.
ImageAlign A gombok megjelenítendő kép elhelyezkedése.

Kétséget kizáróan a Click eseményt használjuk a legtöbbet ennél a vezérlőnél. Példa:

this.myButton.Click+=new System.EventHandler(this.myButtonClick);
private void myButtonClick(oject sender, System.EventArgs e)
{
 //ide írjuk a műveletet, amit végre kívánunk hajtani
}

A Visual Studio 2005 azzal igyekszik megkönnyíteni a munkánkat, hogy a kódban a + jel lenyomásának hatására felajánlja, hogy a tabulátor gomb lenyomásával létrehozza az eseménykezelő függvényt. Így egészen egyszerű a designer-t megkerülve is eseményeket hozzáadni a vezérlőinkhez.

Label

A Label vezérlő az egyik leggyakrabban használt vezérlő. Célja egyszerű szöveg megjelenítés. A LinkLabel vezérlő a Label osztályból származik és annak hiperhivatkozásként megjelenő változata.

Fontosabb property -k:

BorderStyle A vezérlő keretének stílusa.
FlatStyle A vezérlő megjelenítését szabályozza.
Image A gombon megjelenítendő kép hivatkozása.
ImageAlign A gombok megjelenítendő kép elhelyezkedése.
LinkArea Csak LinkLabel. Azt szabályozza, hogy melyik szövegrész jelenjen meg hiperhivatkozásként.
LinkColor Csak LinkLabel. A hivatkozás színe.
Links Csak LinkLabel. Csak olvasható. A használni kívánt hivatkozások collection -je.
LinkVisited Csak LinkLabel. Csak olvasható. Jelzi, hogy használtuk -e már a linket.
TextAlign A megjelenítendő szöveg elhelyezkedése.

TextBox

Ezt a vezérlőt használjuk leggyakrabban a felhasználóval való interakcióra. A TextBoxBase ősosztályból származtatott TextBox, vagy RichTextBox osztály implementálja. Elsődleges célja, hogy a felhasználó számára szöveges beviteli lehetőséget nyújtson. Főbb property -k:

CharacterCasting Alapvető karaktertranszformációs lehetőségek (ToUpper, ToLower) beállításai.
MaxLength Bevihető szöveg maximális hossza (karakterekben mérve).
Multiline Engedélyezi a többsoros adatbevitelt.
PasswordChar Engedélyezi, hogy megjelenítéskor a bevitt szöveg karakterei fedésbe kerüljenek a meghatározott karakterrel.
ReadOnly Csak olvasható mód engedélyezése.
ScrollBars A TextBox -hoz tartozó scrollbar -ok beállításai.
SelectedText A kijelölt szöveg.
SelectionLength A kijelölt szöveg hossza.
SelectionStart A kijelölt szöveg első karakterének indexe a teljes szöveg karakterláncában.
WordWrap Automatikus sortörés.

Főbb események:

Enter
GotFocus
Leave
Validating
Validated
LostFocus
Fókusz-események: egymás után játszódnak le, amikor a vezérlő fókusza megváltozik. A Validated és a Validating kiváltódásának feltétele továbbá, hogy a CausesValidation property értéke igaz legyen.
KeyDown
KeyPress
KeyUp
Billentyű-események: egymás után játszódnak le, amikor egy billentyű lenyomásra kerül és a vezérlő jogosult annak kezelésére.
TextChanged Akkor váltódik ki, ha a szöveg megváltozik.

ComboBox

Ez a már jól ismert legördülő menü. Praktikus, ha kis helyre szeretnénk sok alternatívát benyomorítani. Rendkívül könnyedén használható, az Items propertyn keresztül érhetjük el az elemeket, 0 bázisú indexeléssel, ezen keresztül szúrhatunk be, törölhetünk, módosíthetunk elemeket, melyeknek a ToString() függvény által visszaadott string lesz a megjelenése a ComboBox -ban. Fontos, hogy foreach ciklussal bejárható az Items. Főbb property -k:

Sorted Azt határozza meg, hogy az elemek rendezettek e.
Items A legfontosabb property, a választható objektumokat tartalmazza.

Főbb események:

Enter
Leave
Validating
Validated
Fókusz-események: egymás után játszódnak le, amikor a vezérlő fókusza megváltozik. A Validated és a Validating kiváltódásának feltétele továbbá, hogy a CausesValidation property értéke igaz legyen.
KeyDown
KeyPress
KeyUp
Billentyű-események: egymás után játszódnak le, amikor egy billentyű lenyomásra kerül és a vezérlő jogosult annak kezelésére.
TextChanged Akkor váltódik ki, ha a szöveg megváltozik.
SelectedIndexChanged
SelectedValueChanged
Ha megváltozik a kiválasztott elem ( Index ),
illetve, ha megváltozik a kiválasztott elem értéke ( Value )

NumericUpAndDown

Egy igen egyszerű elem, elsősorban számok bevitelére alkalmas. A le, föl nyilakkal, direktben átírva állítható az értéke. Megadhatunk minimum, maximum értéket, léptetési közt. Főbb property -k:

Hexadecimal Hexadecimálisan jelenítse-e meg az értékét.
Increment Lépték nagysága, amivel a le,föl dombok növelik, illetve csökkentik az értékét.
Maximum A maximális érték meghatározása
Minimum A minimális érték meghatározása
Readonly Írásvédett e az elem
UpDownAlign A fel, le gombok bal illetve jobb oldalt helyezkedjenek-e el.
Value Az érték, amit megjelenítsen ( Egész szám )

Főbb események:

Enter
Leave
Validating
Validated
Fókusz-események: egymás után játszódnak le, amikor a vezérlő fókusza megváltozik. A Validated és a Validating kiváltódásának feltétele továbbá, hogy a CausesValidation property értéke igaz legyen.
KeyDown
KeyPress
KeyUp
Billentyű-események: egymás után játszódnak le, amikor egy billentyű lenyomásra kerül és a vezérlő jogosult annak kezelésére.
TextChanged Akkor váltódik ki, ha a szöveg megváltozik.
ValueChanged Ha megváltozik az érték, amit tárol

CheckBox

Egy logikai értéket kérhetünk be vele lényegében. Két állása van kipipálva vagy nincs kipipálva. Remekül használható beállító panelokon, adat bekérő űrlapokon, esetleg bizonyos funkciók ki, be kapcsolására. Főbb property -k:

CheckAlign Kilenc féle elrendezés közül választhatunk, attól függően, hogy a szöveg és a kipipálható négyzet egymáshoz képest hogy helyezkednek el.
Checked Ki van e pipálva a négyzet.
CheckState A "pipálási állapot". Fontos, hogy ez 3 féle lehet ! Kipipált, Nem Kipipált, illetve Még Nem Meghatározott

Főbb események:

Enter
Leave
Validating
Validated
Fókusz-események: egymás után játszódnak le, amikor a vezérlő fókusza megváltozik. A Validated és a Validating kiváltódásának feltétele továbbá, hogy a CausesValidation property értéke igaz legyen.
KeyDown
KeyPress
KeyUp
Billentyű-események: egymás után játszódnak le, amikor egy billentyű lenyomásra kerül és a vezérlő jogosult annak kezelésére.
CheckStateChanged A már említett "pipálási állapot" megváltozásakor váltódik ki.
CheckedChanged Ha a 2 állapot, kipipálva, illetve nem kipipálva állapot egyikből a másikba átmegy.

RadioButton

Hasonlóan a ComboBox -hoz alternatívák közül történő választásra való. Alapvetően kevés, esetlegesen hosszabb leírású választási lehetőségek megkülönböztetésére szolgál, jellemzően 2-4 db. Különlegessége, hogy egy konténer elemen belül lévő RadioButton -ok közül, csak egy lehet mindig bejelölve. ( Speciális állapot, amikor egyik sincs még bejelölve, ez csak kezdő állapot lehet. Amint egyiket bejelöltünk onnantól kezdve valamelyik, de csak egy, mindig bejelölve lesz, hacsak kódból másképp nem rendelkezünk ) Tehát jól látható, hgoy eldöntendő kérdéseket lehet vele feltenni. Az említett konténer objektum lehet például GroupBox, Panel, maga a Form, TabControl és még pár más elem. Főbb property -k:

CheckAlign Kilenc féle elrendezés közül választhatunk, attól függően, hogy a szöveg és a kipipálható négyzet egymáshoz képest hogy helyezkednek el.
Checked Ki van e pipálva a négyzet.

Főbb események:

Enter
Leave
Validating
Validated
Fókusz-események: egymás után játszódnak le, amikor a vezérlő fókusza megváltozik. A Validated és a Validating kiváltódásának feltétele továbbá, hogy a CausesValidation property értéke igaz legyen.
KeyDown
KeyPress
KeyUp
Billentyű-események: egymás után játszódnak le, amikor egy billentyű lenyomásra kerül és a vezérlő jogosult annak kezelésére.
CheckedChanged Ha a 2 állapot, jelölve, illetve nem jelölve állapot egyikből a másikba átmegy.

GroupBox

Ez egy tároló elem. Esztétikai szempontból sem utolsó, jelölhetjük vele az egy panelon lévő összetartozó elemeket, elnevezhetjük, mégis a legfontosabb előnye, hogy az általa tartalmazott elemeket bejárhatjuk, mégpedig nagyon egyszerűen, mivel lekérhető a tartalma és utána egy foreach ciklussal végigszaladhatunk rajtuk és példának okáért láthatatlanná tehetjük őket, vagy épp letilthatjuk és ahelyett, hogy az összes elem nevét begépelnénk, elég csupán egy ciklust megfogalmaznunk rá. A GroupBox -hoz hasonló más konténer is létezik, amit hasonlóan hasznos dolgokra használhatunk.

Timer

Egy igen csak hasznos elem, ha valamit időzíteni szeretnénk. Működése roppant egyszerű, mindössze egy eseménye van, méghozzá a Tick, ami akkor váltódik ki, ha lejár az idő. Funkciója, hogy egy időtartam elteltével tudjunk feladatot elvégezni. Főbb property -k:

Interval Milliszekundumban adhatjuk meg az intervallumot. Ez lesz az időzítés időtartama.

Főbb események:

Tick Akkor váltódik ki, ha letelt az Interval -ban megadott idő, természetesen, el kell indítanunk előbb a Start() függvénnyel.