Windows Application Miklós Árpád Dr. Kotsis Domokos
Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik. Ismeretük szükséges, de nem elégséges feltétele a sikeres zárthelyinek, illetve vizsgának. Sikeres zárthelyihez, illetve vizsgához a jelen bemutató tartalmán felül a kötelező irodalomként megjelölt anyag, a gyakorlatokon szóban, illetve a táblán átadott tudnivalók ismerete, valamint a gyakorlatokon megoldott példák és az otthoni feldolgozás céljából kiadott feladatok önálló megoldásának képessége is szükséges.
Windows Forms Application
Form címe
A form felirata
Properties (tulajdonság) panel
A form neve
Toolbox (eszköztár) Egyszeres, kétszeres kattintás Vissza „kijelölés” módba
Csoportok
Button
Label
Tulajdonságok
Amit átállítottunk félkövér
Visszaállítás Reset
Eseménykezelés Event (esemény) panel
Dupla kattintásra eseménykezelő
Az eseménykezelő program I.
Az eseménykezelő program II. Alakítsuk át az előző programot, hogy újabb klikkelésre a „ Nem nyomtuk le” és a „Lenyomtuk felirat váltakozzon!
Az eseménykezelő program III. Írjunk programot, melyen legyen két gomb, és egy címke. Amelyiket lenyomtuk, legyen nem elérhető, a másik legyen elérhető. A címke mutassa, melyik gombot nyomtuk le.
Az eseménykezelő program IV. Írjunk programot, melyen legyen két gomb, és egy címke. Amelyiket lenyomtuk, legyen nem látható, a másik legyen látható. A címke mutassa, melyik gombot nyomtuk le.
Legfontosabb tulajdonságok I. Azonosítás Name A komponens egyedi megnevezése, amellyel hivatkozunk rá. Erre a tulajdonságra az általános névadási szabályok vonatkoznak.
Parent A komponenst vizuálisan tartalmazó csoportosító vezérlő („szülő”). Meghatározza a komponens koordinátarendszerének origóját.
Tag Tetszőleges objektum tárolható ebben a tulajdonságban (hivatkozás formájában). A tulajdonság típusa „object”, tehát bármilyen osztály egy példányára hivatkozhat. Segítségével kiegészítő információk adhatók a komponenshez, külső vagy belső objektumok kapcsolhatók hozzá…
Legfontosabb tulajdonságok II. Megjelenés I. BackColor, ForeColor A komponens előtér- és háttérszínét határozzák meg. Egyéni színek („Custom”), a weben gyakran használt színek („Web”), illetve rendszerszínkódok („System”) közül választhatunk.
BackgroundImage, BackgroundImageLayout A komponens háttérképe, amely a BackgroundImageLayout tulajdonság értéke alapján lehet a bal felső sarokba igazított („None”), ismétlődő („Tile”), középre igazított („Center”), méretre igazított („Stretch”) vagy egyéni méretezésű („Zoom”).
Cursor Az itt beállított egérmutató jelenik meg, amikor az egeret a komponens fölé húzzuk. …
Legfontosabb tulajdonságok III. Megjelenés II. Font A komponens által megjelenített szöveg(ek) betűstílusát határozza meg. Maga is több résztulajdonságból áll, de ezek külön nem módosíthatók. Ha módosítjuk a résztulajdonságokat, mindig egy-egy új Font objektum jön létre. Ha egyáltalán nem módosítjuk, akkor a komponens átveszi a szülője (vagy szülő hiányában tartalmazója) megfelelő tulajdonságának értékét.
Image, ImageAlign A komponensen megjelenített kép, amelyet az ImageAlign tulajdonság segítségével vízszintesen, illetve függőlegesen is igazíthatunk.
Text, TextAlign A komponens szövege, amelyet a TextAlign tulajdonság segítségével vízszintesen, illetve függőlegesen is igazíthatunk.
Legfontosabb tulajdonságok IV. Viselkedés. Enabled A komponens működtetésének engedélyezésére, illetve letiltására szolgál.
TabIndex, TabStop Ha a TabStop tulajdonság értéke igaz („true”), a komponens részt vesz a Tab billentyűvel végrehajtható bejárásban, méghozzá a TabIndex tulajdonság által megadott pozícióban.
Visible A komponens láthatóságának engedélyezésére, illetve letiltására szolgál. Bár elméletileg a nem látható komponensek működtetése is engedélyezhető az Enabled tulajdonsággal, ezek a felhasználó számára semmilyen módon nem érhetők el mindaddig, amíg a Visible tulajdonság (vagy a Show() metódus, lásd később) segítségével láthatóvá nem tesszük őket.
Legfontosabb tulajdonságok V. Elhelyezkedés I. Anchor Segítségével virtuálisan „összeköthetjük” a komponenst a szülő bal/jobb/felső/alsó szegélyével. Összekötés után a komponens és a szülő megfelelő széle mindig együtt „mozog”, tehát távolságuk átméretezéskor sem változik.
AutoSize, AutoSizeMode Ha az AutoSize tulajdonság értéke igaz („true”), a komponens automatikusan a saját tartalma által megkívánt méretre nagyítja (AutoSizeMode == GrowOnly) vagy nagyítja és kicsinyíti (AutoSizeMode == GrowAndShrink) saját magát.
Dock Segítségével közvetlenül hozzákapcsolhatjuk a komponenst a szülő bal/jobb/felső/alsó szegélyéhez, vagy beállíthatjuk, hogy a komponens mindig teljesen töltse ki a szülő területét (Dock == Fill). Hozzákapcsoláskor a komponens „rácsatlakozik” a szülő megfelelő szegélyeire.
Legfontosabb tulajdonságok VI. Elhelyezkedés II. Location A komponens képpontokban számított pozícióját adja meg a szülőhöz viszonyított koordinátarendszerben. Az X és Y résztulajdonságokkal a vízszintes és függőleges pozíció külön-külön is beállítható.
MaximumSize, MinimumSize A komponens képpontokban számított maximális, illetve minimális méreteit (szélességét és magasságát) adja meg.
Size A komponens képpontokban számított méreteit (szélességét és magasságát) adja meg.
Legfontosabb tulajdonságok VII. Egyéb GenerateMember Ha a GenerateMember tulajdonság értéke igaz („true”), a komponenshez az őt tartalmazó ablakosztályban a Visual Studio 2005 külön tagváltozót rendel. Ellenkező esetben a komponensre kívülről nem lehet majd hivatkozni.
Modifiers Ez a tulajdonság szabja meg a komponens OOP láthatósági szintjét. Lehetséges értékei: public, protected, protected internal, internal, private.
UseMnemonic Ha a UseMnemonic tulajdonság értéke igaz („true”), a komponens Text tulajdonságánál megadott szövegben az & karakter után álló betű lesz a komponens gyorsbillentyűje. Az & karakter ilyenkor nem jelenik meg a komponens szövegében.
UseWaitCursor Segítségével „várakozó kurzorra” állíthatjuk át a komponens egérmutatóját.
Legfontosabb metódusok I. Hide(), Show() A komponens elrejtésére, illetve felfedésére szolgáló metóduspár.
Invalidate(), Update(), Refresh() Mindhárom metódus közvetve vagy közvetlenül a komponens újrarajzolását váltja ki: • Invalidate() - a komponens területét részben vagy teljesen újrarajzolandónak nyilvánítja, de rajzolást közvetlenül nem végez (az újrarajzolásra tehát a legközelebbi rajzolási ciklusban kerül sor) Több felüldefiniált változata is van, ezekkel oldható meg az egyes részterületek újrarajzolandónak nyilvánítása. • Update() - a komponens korábban már újrarajzolandónak nyilvánított területeinek azonnali újrarajzolását váltja ki • Refresh() - a komponens teljes területét újrarajzolandónak nyilvánítja és azonnal el is végzi az újrarajzolást
BringToFront(), SendToBack() A komponenst az előtérbe (azaz a többi komponens elé), illetve a háttérbe (azaz a többi komponens mögé) helyezi. Az egyes komponenseknek van egy „virtuális z koordinátája” is, ez határozza meg, hogy a komponens mely más elemeket takar el a képernyőn.
Legfontosabb metódusok II. Focus() A komponensre állítja a bemeneti fókuszt. A metódus hívását követően a felhasználó beviteli műveletei, tehát például a lenyomott billentyűk és az egérrel végzett műveletek erre a komponensre irányulnak.
Select() Kiválasztja a komponenst (amennyiben az kiválasztható típusú). Ki nem választható típusú komponensek: Panel, GroupBox, PictureBox, ProgressBar, Splitter, Label, LinkLabel (ha nem tartalmaz hivatkozást) és leszármazottaik. A ki nem választható komponensek is birtokolhatják a bemeneti fókuszt.
Scale() Adott tényezővel megszorozza a komponens (valamint az általa tartalmazott alkomponensek) minden méretét. Kicsinyítésre és nagyításra is alkalmas.
SetBounds() A komponens helyét és méreteit állítja be. Előnye, hogy egyszerre állítja be az új hely koordinátáit és az új méreteket, így a komponens csak egyszer rajzolja újra saját magát.
Legfontosabb események I. Click A komponensre kattintáskor hívja meg eseménykezelőit.
Enter, Leave Akkor hívja meg eseménykezelőit, amikor a komponens megkapja (Enter), illetve elveszíti (Leave) a bemeneti fókuszt.
KeyDown, KeyPress, KeyUp A komponens fókuszált** állapotában valamely billentyű lenyomásakor a KeyDown, felengedésekor a KeyUp, illetve a „normál”*** billentyűk megnyomásakor a KeyPress eseménykezelők hívódnak meg. A billentyűk megnyomásakor először a KeyDown, majd a KeyPress, utoljára a KeyUp eseménykezelők hívódnak meg. * A Visual Studio 2005 grafikus felületén nem tudunk egy eseményhez több eseménykezelőt rendelni (saját forráskódban, illetve az automatikusan előállított forráskód utólagos saját kiegészítésével viszont igen). ** Egy komponens akkor van fókuszált állapotban, ha az operációs rendszer hozzá irányítja a bemeneti eszközök eseményeit (egérmozgatás, billentyűlenyomás stb.) - lásd a Focus() metódus leírását. ***„Normál” billentyűk: az ABC betűi, a számok és az írásjelek.
Legfontosabb események II. MouseDown, MouseMove, MouseUp Az egér valamelyik gombjának a komponens felett történő megnyomásakor a MouseDown, felengedésekor a MouseUp eseménykezelők hívódnak meg. Az egérnek a komponens felett történő mozgatásakor a MouseMove eseménykezelők hívódnak meg. Figyelem: az egér mozgatásakor a MouseMove eseménykezelők igen gyakran, akár minden képpontnál újra és újra meghívódhatnak.
MouseEnter, MouseLeave Akkor hívja meg eseménykezelőit, amikor az egér a komponens fölé ér (MouseEnter), illetve elhagyja a komponens területét (MouseLeave).
Move Akkor hívja meg eseménykezelőit, ha a komponens pozíciója (Location tulajdonságának értéke) megváltozott.
Resize Akkor hívja meg eseménykezelőit, ha a komponens mérete (Size tulajdonságának értéke) megváltozott.
Legfontosabb események III. Changed Az ezen eseményekhez tartozó eseménykezelők akkor hívódnak meg, ha a komponens megfelelő tulajdonságának értéke megváltozott. Például az AutoSizeChanged eseménykezelői az AutoSize tulajdonság, a BackColorChanged eseménykezelői a BackColor tulajdonság megváltozásakor hívódnak meg, és így tovább. Néhány gyakran használt …Changed eseménykezelő: • AutoSizeChanged • EnabledChanged • FontChanged • LocationChanged • SizeChanged • VisibleChanged
Fordítás
Futtatás
Osztálydiagram I.
Osztálydiagram II.
Gyakorló feladat I.
Kilépés: Close();
Gyakorló feladat II.
Jegyek számának beállítása: textBox2.Text = String.Format("{0,8:F4}", a);
Gyakorló feladat III.
Olvasson be egy karaktersorozatot egy TextBox vezérlőből, majd Írja vissza egy másik TextBox vezérlőbe megfordítva. A Form-on legyen egy „Megfordít” és egy „Kilépés” parancsgomb is.
Gyakorló feladat IV.
Olvasson be egy mondatot, majd minden szó első betűjét alakítsa nagybetűssé. A szavakat szóköz választja el. A beolvasáshoz és a kiíráshoz használjon TextBox vezérlőket. A Fom-on legyen egy „Átalakít” és egy „Kilépés” parancsgomb is.
Másodfokú egyenlet megoldása Textbox
Label (12 pontos)
Egyelőre üres label
Fókusz az első beolvasásra
Input ellenőrzés
Globális változók deklarálása namespace WindowsApplication3 { public partial class Form1 : Form { double a, b, c, d; public Form1() …
Egy adat beolvasása private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == (char)(13)) { try { label4.Text = ""; label5.Text = ""; label6.Text = ""; textBox2.Text = ""; textBox3.Text = ""; a = double.Parse(textBox1.Text); textBox2.Focus(); } catch { textBox1.Text = ""; label5.Text = "Hibás adat!"; textBox1.Focus(); } } }
Ha a==0 if (a == 0) { if (b == 0) { if (c == 0) { label4.Text = "Minden x megoldás"; } else { label4.Text = "Nincs megoldás"; } } else { label4.Text = "Egy gyök"; label5.Text = "X = "+(-c / b).ToString(); } }
Valós és komplex gyökök d = b * b - 4 * a * c; if (d >= 0) { d = System.Math.Sqrt(d); label4.Text = "Valós gyökök"; label5.Text = "X1="+((-b + d) / (2 * a)).ToString(); label6.Text = "X2="+((-b - d) / (2 * a)).ToString(); } else { d = -1 * d; d = (System.Math.Sqrt(d)) / (2 * a); label4.Text = "Komplex gyökök"; label5.Text = "X1="+((-b) / (2 * a)).ToString()+" + "+d.ToString()+"i"; label6.Text = "X2="+((-b) / (2 * a)).ToString()+" - "+d.ToString()+"i"; }
Legfontosabb komponensek I. Közönséges vezérlők(Common Controls) • Nyomógomb („Button”) • Jelölőnégyzet („CheckBox”) • Legördülő lista („ComboBox”) • Címke („Label”) • Lista („CheckedListBox”, „ListBox”, „ListView”) • Számmező („NumericUpDown”) • Rádiógomb („RadioButton”) • Szövegmező („TextBox”, „RichTextBox”) • Fa („TreeView”) • Böngésző („WebBrowser”)** * A beépített komponensek tárgyalása nem teljes körű, a legfontosabb vezérlők bemutatására szorítkozunk. ** A WebBrowser komponens gyakorlatilag a telepített Internet Explorer egy példánya, ennek összes előnyével és hátrányával.
Legfontosabb komponensek II. Csoportosítás (Containers) • Csoport („GroupBox”) • Panel („Panel”) • Automatikus rendezőpanel („FlowLayoutPanel”, „TableLayoutPanel”) • Osztott panel („SplitContainer”) • Füles lapozó („TabControl”)
Legfontosabb komponensek III. Menük és eszközsorok („Menus & Toolbars”) • Főmenü („MenuStrip”) • Helyi menü („ContextMenuStrip”) • Eszközsor („ToolStrip”) • Állapotsor („StatusStrip”)
Legfontosabb komponensek IV. Adatketelő (Data)
• Adatbázis („DataSet”) • Adatrács („DataGridView”) • Adatforrás („BindingSource”) • Adatnavigátor („BindingNavigator”)
Legfontosabb komponensek V. Nem vizuális (Components)
• Háttérben futó feladat („BackgroundWorker”) • Közös hibakezelő („ErrorProvider”) • Közös súgókezelő („HelpProvider”) • Fájlrendszer-figyelő („FileSystemWatcher”) • Képlista („ImageList”) • OS folyamat („Process”) • OS szolgáltatásvezérlő („ServiceController”) • Időzítő („Timer”)
Legfontosabb komponensek VI. Nyomtatás (Printing) • Nyomtatható dokumentum („PrintDocument”) • Oldalbeállító párbeszédablak („PageSetupDialog”) • Nyomtatási párbeszédablak („PrintDialog”) • Nyomtatási előnézet („PrintPreviewControl”) • Nyomtatási előnézet párbeszédablak („PrintPreviewDialog”)
Legfontosabb komponensek VII. Párbeszédablakok (Dialogs)
• Mappatallózó („FolderBrowserDialog”) • Színbeállító párbeszédablak („ColorDialog”) • Betűstílus-beállító párbeszédablak („FontDialog”) • Fájlmegnyitó párbeszédablak („OpenFileDialog”) • Fájlmentő párbeszédablak („SaveFileDialog”)