Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Vizuális programozás Windows Forms Párbeszédablakok és vezérlők.

Hasonló előadás


Az előadások a következő témára: "Vizuális programozás Windows Forms Párbeszédablakok és vezérlők."— Előadás másolata:

1 Vizuális programozás Windows Forms Párbeszédablakok és vezérlők

2 Grafikus felület programozása Windows Forms Windows Forms Windows Presentation Foundation Windows Presentation Foundation

3 Windows Forms

4 Form - Hogyan hozzuk létre? Új projekt létrehozásakor egy üres formot kapunk További form létrehozása 1. Jobb egérkattintás a projekten Solution Explorer- ben 2. Add 3. Add Windows Forms

5 Tulajdonságok beállítása Form neve Kategóriák szerint ABC sorrendben Leírás Események

6 Eseménykezelés

7 Windows Forms Designer – Automatikusan előállított kód partial class

8 Saját kód – partial class

9 A form életciklusa Konstruktor Konstruktor Load – felület kialakítása, erőforrások lefoglalása történhet Load – felület kialakítása, erőforrások lefoglalása történhet Activated – a form megkapta az input fókuszt Activated – a form megkapta az input fókuszt Deactivate – a form elvesztette az input fókuszt Deactivate – a form elvesztette az input fókuszt SizeChanged SizeChanged … FormClosing – CancelEventArgs.Cancel FormClosing – CancelEventArgs.Cancel FormClosed FormClosed Példaprogram: FormEsemenyek Példaprogram: FormEsemenyek

10 Windows Forms vezérlők

11 Hogyan használjuk a vezérlőket?

12 A háttérben keletkező kód

13 Elnevezési konvenció btOK, frmFőablak, msFőmenü, tsmiFájl, tbNév btOK, frmFőablak, msFőmenü, tsmiFájl, tbNév A név két részből áll A komponens típusát beazonosító rész, ez kisbetűs: bt (Button), ms (MenuStrip), tsmi (ToolStripMenuItem), tb (TextBox), cb (ComboBox), lb (ListBox) A komponens típusát beazonosító rész, ez kisbetűs: bt (Button), ms (MenuStrip), tsmi (ToolStripMenuItem), tb (TextBox), cb (ComboBox), lb (ListBox) A feladatot beazonosító rész, egy vagy több szóból áll, nagybetűvel kezdődik: Főablak, Főmenü, OK, Fájl, Név A feladatot beazonosító rész, egy vagy több szóból áll, nagybetűvel kezdődik: Főablak, Főmenü, OK, Fájl, Név

14 Vezérlők elrendezése Elrendezés a Format menüvel és eszköztárral Tabulátor sorrend beállítása Vezérlő lehorgonyzása Dokkolás

15 Toolbox beállítása

16 Hogyan lássuk el menüvel a formot?

17 Menü MenuStrip komponens ablakra helyezése MenuStrip komponens ablakra helyezése Szokásos menüpontok automatikusan Szokásos menüpontok automatikusan Megadás kézzel Megadás kézzel Minden menüpont egy önálló objektum saját tulajdonságokkal és eseményekkel Minden menüpont egy önálló objektum saját tulajdonságokkal és eseményekkel

18 Menü tulajdonságok használata

19 Gyorsító billentyű, kiválasztó pipa, engedélyezés

20 Fontosabb események DropDownOpening – mielőtt lenyílna DropDownOpening – mielőtt lenyílna Click Click Mintaalkalmazás Mintaalkalmazás

21 Gyorsmenü ToolStripMenuItem ToolStripMenuItem

22 Eseménykezelés Azonos a főmenü eseménykezelésével Azonos a főmenü eseménykezelésével

23 GroupBox és Panel vezérlő használata Helyezzünk el további vezérlőket rajta Helyezzünk el egy panelt vagy egy csoportablakot a formon ( Panel vagy GroupBox ) Korábban a formra helyezett vezérlőket is ráhúzhatunk A Panel vezérlő görgetősávokkal is rendelkezhet ( AutoScrollbar=True ) A GroupBox címsorral is rendelkezhet ( Text=címszöveg )

24 Példaalkalmazás a csoportablak és a jelölőnégyzet használatára

25 Listaablak (ListBox) vezérlő használata Elemek hozzáadása tervezési időben: Elemek hozzáadása tervezési időben: Items tulajdonság – String Collection Editor Items tulajdonság – String Collection Editor

26 Listaablak kezelése Listaablak feltöltése futási időben Listaablak feltöltése futási időben string[] nevek= {"Alma", "Körte", "Banán", "Narancs"}; string[] nevek= {"Alma", "Körte", "Banán", "Narancs"}; lbListaablak.Items.AddRange(nevek); lbListaablak.Items.AddRange(nevek); Kijelölt elem lekérdezése Kijelölt elem lekérdezése tbListaelem.Text= (string)lbListaablak.SelectedItem; tbListaelem.Text= (string)lbListaablak.SelectedItem;

27 Tulajdonságok A listában szereplő elemek száma.Items.Count A kiválasztott elem sorszáma (0-tól kezd). vagy -1, ha nincs kiválasztva egy sem. SelectedIndex Egy vagy több listaelem választható ki egyszerre. SelectionMode A görgető sáv mindig látható.ScrollAlwaysVisible Többoszlopos megjelenítés engedélyezése.MultiColumn LeírásTulajdonság

28 Metódusok Elemek eltávolítása.Items.Remove/Items. Clear Elemek hozzáadása.Items.Add/ Items.Insert LeírásMetódusok

29 Példaalkalmazás Listaablak használata

30 Eszköztár készítése és használata ToolStrip komponens formra helyezése ToolStrip komponens formra helyezése Eszköztár elemek létrehozása legördülő listából történő választással Eszköztár elemek létrehozása legördülő listából történő választással Feliratos nyomógomb: DisplayStyle=Text, Text=felirat Feliratos nyomógomb: DisplayStyle=Text, Text=felirat Ikonos nyomógomb: DisplayStyle=Image, Image=… BMP fájlok Ikonos nyomógomb: DisplayStyle=Image, Image=… BMP fájlok szabványos ikonok az eszköztárra: jobb egérgomb az eszköztáron, Insert Standard Items szabványos ikonok az eszköztárra: jobb egérgomb az eszköztáron, Insert Standard Items

31 Eseménykezelés Click esemény Click esemény A nyomógombhoz ugyanazt az eseménykezelőt kell hozzárendelni, mint amit a megfelelő menüponthoz rendeltünk A nyomógombhoz ugyanazt az eseménykezelőt kell hozzárendelni, mint amit a megfelelő menüponthoz rendeltünk

32 Állapotsor (StatusStrip) StatusStrip a formra StatusStrip a formra Legördülő listából állapotsor elem választás Legördülő listából állapotsor elem választás Második lépés ismétlése Második lépés ismétlése Állapotsor elemek átnevezése Állapotsor elemek átnevezése Kijelölés majd Properties vagy Kijelölés majd Properties vagy Állapotsor kijelölése/Properties/Items Állapotsor kijelölése/Properties/Items

33 Állapotsor elemeinek beállítása

34 Szöveg beállítása programból ssÁllapotsor.Items[0].Text= ”Első”; ssÁllapotsor.Items[0].Text= ”Első”;

35 Példaalkalmazás Állapotsor és választógomb használata

36 Egérkezelés Fontosabb események Fontosabb események MouseDown MouseDown MouseMove MouseMove MouseUp MouseUp Paraméter Paraméter MouseEventArgs e MouseEventArgs e e.Button e.Button e.X, e.Y, e.Location e.X, e.Y, e.Location Példaprogram: EgérKezeles Példaprogram: EgérKezeles

37 Párbeszédablakok használata Windows Forms alkalmazásokban Előre definiált párbeszédablakok Visual Studio.NET-ben Párbeszédablakok megjelenítése DialogResult tulajdonság Adatbevitel párbeszédablakon keresztül

38 Előre definiált párbeszédablakok PrintPreviewDialogPrintPreviewDialog Úgy jeleníti meg a dokumentumot, ahogyan az a nyomtatás eredményeképpen látható lesz PageSetupDialog Oldalbeállítás nyomtatáshoz PrintDialog Nyomtató kiválasztása és nyomtatással kapcsolatos beállítások FontDialog A rendszerben telepített fontok megtekintése és betűtípus beállítás ColorDialog Színválasztás palettáról és újabb színek hozzáadása a palettához SaveFileDialogSaveFileDialog Állomány mentésekor hely és név megadása OpenFileDialogOpenFileDialog Állomány megnyitásakor hely és név megadása

39

40 Párbeszédablakok megjelenítése Előre definiált párbeszédablak megjelenítése Előre definiált párbeszédablak megjelenítése private void button1_Click(object sender, System.EventArgs e) { OpenFileDialog1.ShowDialog(); } private void button1_Click(object sender, System.EventArgs e) { OpenFileDialog1.ShowDialog(); } public void PerformCalculations() { MessageBox.Show ("M ű velet végrehajtva", "Jelentés",MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk); } public void PerformCalculations() { MessageBox.Show ("M ű velet végrehajtva", "Jelentés",MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk); } Üzenetablak megjelenítése Üzenetablak megjelenítése

41 DialogResult DialogResult A visszatérési érték adja meg, hogy mely gombbal zárta be az ablakot a felhasználó DialogResult.Cancel jelzi, hogy a felhasználó a Mégse gombon kattintott PéldaPélda Ha készítünk egy párbeszédablakot, annak lezárását nyomógombokkal (OK, Mégse, stb.) oldjuk meg. Ezek DialogResult tulajdonsága határozza meg, hogy milyen értékkel tér vissza a ShowDialog(). A DialogResult tulajdonság tervezési és futási időben is beállítható.

42 Adatbevitel párbeszédablakon keresztül public void DisplayValue() {string Útvonal; DialogResult Eredmény = openFileDialog1.ShowDialog(); if (Eredmény == DialogResult.OK) { Útvonal = openFileDialog1.FileName.ToString(); MessageBox.Show("A kiválasztott állomány: '" + Útvonal + "'", "Kiválasztás", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); } … } public void DisplayValue() {string Útvonal; DialogResult Eredmény = openFileDialog1.ShowDialog(); if (Eredmény == DialogResult.OK) { Útvonal = openFileDialog1.FileName.ToString(); MessageBox.Show("A kiválasztott állomány: '" + Útvonal + "'", "Kiválasztás", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); } … } Eredmények kiolvasása a párbeszédablakból és felhasználásuk Kiolvassuk a párbeszédablak objektum egy vagy több tulajdonságát Ha OK, Megnyit, Mentés, stb. gombbal zárta le a felhasználó a párbeszédablakot, akkor

43 Beépített párbeszédablak használata - mintaprogramok Beepitett_Pb_text Beepitett

44 Saját párbeszédablak Új form létrehozása (egy új ablakosztály) Új form létrehozása (egy új ablakosztály) Komponensek elhelyezése a formon Komponensek elhelyezése a formon Automatikus bezárás beállítása egyes nyomógombokhoz előre megadott visszatérési értékekkel Automatikus bezárás beállítása egyes nyomógombokhoz előre megadott visszatérési értékekkel Párbeszédablak objektum létrehozása Párbeszédablak objektum létrehozása Kezdeti beállítások/a felhasználó által megadott adatok kiolvasása – probléma private elérésű komponensek Kezdeti beállítások/a felhasználó által megadott adatok kiolvasása – probléma private elérésű komponensek Megjelenítés Megjelenítés Bezárás Bezárás Adatok kiolvasása Adatok kiolvasása

45 A párbeszédablak automatikus bezárása Példaprogram: Pbablak_Automatikus_Bezarasa Példaprogram: Pbablak_Automatikus_Bezarasa

46 A felhasználó által megadott adatok kiolvasása A komponens alapból private elérésű A komponens alapból private elérésű A párbeszédablakon kívülről nem olvashatóak/írhatóak a tulajdonságai A párbeszédablakon kívülről nem olvashatóak/írhatóak a tulajdonságai 1. megoldás: a komponens elérése legyen internal 1. megoldás: a komponens elérése legyen internal 2. megoldás: létrehozunk egy tulajdonságot a párbeszédablak osztályában 2. megoldás: létrehozunk egy tulajdonságot a párbeszédablak osztályában

47 Lekérdező tulajdonság beépítése Példaprogram: Pbablak_Adatbeallitas_Kiolvasas Példaprogram: Pbablak_Adatbeallitas_Kiolvasas

48 Felhasználói adatbevitel ellenőrzése A vezérlők ellenőrzése a Validating esemény felhasználásával A vezérlők ellenőrzése a Validating esemény felhasználásával Példaalkalmazás: TextBox komponens használata Példaalkalmazás: TextBox komponens használata Az ErrorProvider vezérlő használata Az ErrorProvider vezérlő használata Példaalkalmazás: TextBox komponens használata ErrorProvider-rel Példaalkalmazás: TextBox komponens használata ErrorProvider-rel

49 Validating esemény Azelőtt következik be mielőtt a vezérlő elveszítené az input fókuszt Azelőtt következik be mielőtt a vezérlő elveszítené az input fókuszt Ha a vezérlő CausesValidation tulajdonsága True-ra van állítva (ez az alapértelmezett) Ha a vezérlő CausesValidation tulajdonsága True-ra van állítva (ez az alapértelmezett) Szabályozhatjuk, hogy mikor kerülhet át a fókusz egy másik vezérlőre Szabályozhatjuk, hogy mikor kerülhet át a fókusz egy másik vezérlőre

50 e.Cancel használata

51 Példaalkalmazás: TextBox komponens használata Validalas

52 ErrorProvider vezérlő ErrorProvider ErrorProvider Hibákat jelenít meg a formon keresztül történő felhasználói adatbevitel ellenőrzése során Hibákat jelenít meg a formon keresztül történő felhasználói adatbevitel ellenőrzése során Hibákat jelenít meg egy adathalmazban (dataset) Hibákat jelenít meg egy adathalmazban (dataset) Kulcs tulajdonságok Kulcs tulajdonságok Kulcs metódusok Kulcs metódusok ContainerControl Icon SetError

53 ErrorProvider Érvénytelen bevitt adat esetén hibaüzenet megjelenítését teszi lehetővé Érvénytelen bevitt adat esetén hibaüzenet megjelenítését teszi lehetővé Előnye: az érintett vezérlő mellett megjelenik egy hibaikon Előnye: az érintett vezérlő mellett megjelenik egy hibaikon Ha a felhasználó az ikon felé helyezi az egérkurzort, egy gyorstippben megjelenik a hibaüzenet Ha a felhasználó az ikon felé helyezi az egérkurzort, egy gyorstippben megjelenik a hibaüzenet

54 Fontos tulajdonságok ContainerControl – ez tartalmazza az ErrorProvider-t ContainerControl – ez tartalmazza az ErrorProvider-t Icon – választott ikon az alapértelmezett helyett Icon – választott ikon az alapértelmezett helyett

55 Fontos metódusok SetError – meghatározza, hogy melyik vezérlő mellett jelenjen meg az ikon és, hogy mi legyen a hibaüzenet szövege SetError – meghatározza, hogy melyik vezérlő mellett jelenjen meg az ikon és, hogy mi legyen a hibaüzenet szövege Példaalkalmazás: ErrorProvider

56 Vezérlők elhelyezése az ablakon futási időben

57 Controls gyűjtemény Vezérlő objektumok gyűjteménye Vezérlő objektumok gyűjteménye Add, Remove és RemoveAt metódusokkal bővítjük vagy szűkítjük a gyűjtemény Add, Remove és RemoveAt metódusokkal bővítjük vagy szűkítjük a gyűjtemény A Contains metódus adja meg, hogy egy vezérlő tagja-e a gyűjteménynek A Contains metódus adja meg, hogy egy vezérlő tagja-e a gyűjteménynek

58 Fontosabb metódusok Egy iterátort ad vissza, amivel végiglépkedhetünk a gyűjteményen. GetEnumerator Visszaadja a megadott vezérlő sorszámát.IndexOf Visszaad egy String-et, ami az aktuális objektumot reprezentálja. ToString Eltávolítja az indexxel megadott sorszámú egy vezérlőt.RemoveAt Vezérlő eltávolítása a gyűjteménybőlRemove Visszaadja, hogy egy adott vezérlő tagja-e a gyűjteménynek.Contains Az összes vezérlő eltávolítása a gyűjteményből.Clear Vezérlő tömb hozzáadása a vezérlő gyűjteményhez.AddRange Egy vezérlő hozzáadása a vezérlő gyűjteményhez.Add LeírásMetódus

59 Vezérlők elhelyezése a formon futási időben Lépések A vezérlő létrehozása CheckBox cbÉrtesít = new CheckBox(); // tulajdonságok beállítása cbÉrtesít.Text = "Kér értesítést"; cbÉrtesít.Left = 24; cbÉrtesít.Top = 80; CheckBox cbÉrtesít = new CheckBox(); // tulajdonságok beállítása cbÉrtesít.Text = "Kér értesítést"; cbÉrtesít.Left = 24; cbÉrtesít.Top = 80; A szerkezeti (elrendezési) logika kikapcsolása a tárolón. Itt a tároló egy csoportablak. GroupBox1.SuspendLayout();

60 Vezérlők elhelyezése a formon futási időben Lépések Vezérlő hozzáadása a tárolóhoz (container) a Controls tulajdonság Add metódusával. // az új vezérl ő hozzáadása a gy ű jteményhez GroupBox1.Controls.Add(cbÉrtesít); // az új vezérl ő hozzáadása a gy ű jteményhez GroupBox1.Controls.Add(cbÉrtesít); A szerkezeti (elrendezési) logika bekapcsolása a megcélzott tároló komponensen. groupBox1.ResumeLayout(true);

61 Példaalkalmazás VezerlokFutasidoben

62 Gyorsmenü létrehozása futási időben Gyorsmenü formhoz rendelése Menüelemek hozzáadása futásidőben Eseménykezelők készítése a menüelemekhez Menü tulajdonságok használata Gyakorlat: Menüfrissítés futásidőben

63 Gyorsmenü formhoz rendelése futásidőben 1 ContextMenuStrip objektum létrehozása ContextMenuStrip objektum létrehozása this.ContextMenuStrip = new ContextMenuStrip(); this.ContextMenuStrip = new ContextMenuStrip(); Menüpontok elhelyezése a felbukkanó menüben Menüpontok elhelyezése a felbukkanó menüben this.ContextMenuStrip.Items.Add("Új" + this.ContextMenuStrip.Items.Count.ToString()); this.ContextMenuStrip.Items.Add("Új" + this.ContextMenuStrip.Items.Count.ToString()); Közös eseménykezelő regisztrálása az összes menüponthoz Közös eseménykezelő regisztrálása az összes menüponthoz this.ContextMenuStrip.ItemClicked += new ToolStripItemClickedEventHandler( cmsGyorsMenü_ItemClicked); this.ContextMenuStrip.ItemClicked += new ToolStripItemClickedEventHandler( cmsGyorsMenü_ItemClicked);

64 Gyorsmenü formhoz rendelése futásidőben 2 Eseménykezelő függvény megírása private void cmsGyorsMenü_ItemClicked(object sender, ToolStripItemClickedEventArgs e) private void cmsGyorsMenü_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { switch (e.ClickedItem.ToString()) { switch (e.ClickedItem.ToString()) { case "Új0": { case "Új0": MessageBox.Show("A kiválasztott menüpont: Új0"); MessageBox.Show("A kiválasztott menüpont: Új0"); break; break; case "Új1": case "Új1": MessageBox.Show("A kiválasztott menüpont: Új1"); MessageBox.Show("A kiválasztott menüpont: Új1"); break; break; case "Új2": case "Új2": MessageBox.Show("A kiválasztott menüpont: Új2"); MessageBox.Show("A kiválasztott menüpont: Új2"); break; break; } }

65 Példaalkalmazás GyorsMenu

66 MDI alkalmazások létrehozása SDI és MDI alkalmazások MDI alkalmazások létrehozása Szülő és gyermek formok kapcsolata Gyakorlat: MDI alkalmazás létrehozása

67 SDI és MDI alkalmazások SDISDI Csak egy dokumentum látható Csak a dokumentum bezárása után nyitható meg egy újabb dokumentum MDIMDI Egyszerre több dokumentum látható Mindegyik dokumentum saját ablakban van megjelenítve

68 MDI alkalmazások létrehozása Szülő form létrehozása Szülő form létrehozása Új projekt létrehozása Új projekt létrehozása IsMdiContainer tulajdonság True-ra állítása IsMdiContainer tulajdonság True-ra állítása Menüpont a gyermek form megjelenítéséhez Menüpont a gyermek form megjelenítéséhez Gyermek form definiálása Gyermek form definiálása Project/Add Windows Form Project/Add Windows Form Gyermek form létrehozása és megjelenítése Gyermek form létrehozása és megjelenítése protected void MenuItem2_OnClick(object sender, System.EventArgs e) {// Gyermek form létrehozása. frmGyermek frmGyermek = new frmGyermek(); // Szül ő form beállítása. frmGyermek.MdiParent = this; // Gyermek form megjelenítése. frmGyermek.Show(); } protected void MenuItem2_OnClick(object sender, System.EventArgs e) {// Gyermek form létrehozása. frmGyermek frmGyermek = new frmGyermek(); // Szül ő form beállítása. frmGyermek.MdiParent = this; // Gyermek form megjelenítése. frmGyermek.Show(); }

69 Szülő és gyermek formok kapcsolata Gyermekablakok listája Gyermekablakok listája Ablak menü létrehozása Ablak menü létrehozása A főmenü objektumban: MdiWindowListItem=ablak menüpont objektum neve A főmenü objektumban: MdiWindowListItem=ablak menüpont objektum neve Az aktív MDI gyermekablak beazonosítása Az aktív MDI gyermekablak beazonosítása ActiveMdiChild tulajdonság ActiveMdiChild tulajdonság Gyermekablakok elrendezése Gyermekablakok elrendezése LayoutMdi metódus meghívása LayoutMdi metódus meghívása Form frmAktívGyermek = this.ActiveMdiChild;

70 MDI alkalmazás létrehozása

71 Drag & Drop

72 Fogd és vidd Két szövegmező, a felsőből húzzuk át a szöveget az alsóba Két szövegmező, a felsőből húzzuk át a szöveget az alsóba Az alsóban az AllowDrop=True kell legyen Az alsóban az AllowDrop=True kell legyen Eseménykezelés az eredeti helyen (felső szövegmező): MouseDown – egérgomb lenyomás  elindítjuk a műveletet MouseDown – egérgomb lenyomás  elindítjuk a műveletet TextBox1.DoDragDrop(TextBox1.Text, DragDropEffects.Copy); TextBox1.DoDragDrop(TextBox1.Text, DragDropEffects.Copy);

73 Fogd és vidd Eseménykezelés a cél helyen: DragEnter – az egérrel a felhasználó bevonszolt valamilyen objektumot a szövegmező területére  ellenőrizzük a tartalom formátumát és engedélyezzük a műveletet DragEnter – az egérrel a felhasználó bevonszolt valamilyen objektumot a szövegmező területére  ellenőrizzük a tartalom formátumát és engedélyezzük a műveletet if (e.Data.GetDataPresent(DataFormats.Text)) e.Effect = DragDropEffects.Copy; else e.Effect = DragDropEffects.None; if (e.Data.GetDataPresent(DataFormats.Text)) e.Effect = DragDropEffects.Copy; else e.Effect = DragDropEffects.None; DragDrop – a felhasználó elengedte az egérgombot  az átvonszolt szöveget megjelenítjük a cél szövegmezőben DragDrop – a felhasználó elengedte az egérgombot  az átvonszolt szöveget megjelenítjük a cél szövegmezőben


Letölteni ppt "Vizuális programozás Windows Forms Párbeszédablakok és vezérlők."

Hasonló előadás


Google Hirdetések