Alkalmazásfejlesztés gyakorlat .NET WinForms
.NET WinForms – Elemek Az Ablak (Form) Menük (Menus & Toolbars) System.Windows.Forms.Form osztály biztosítja egy „szokásos” ablak funkcióit Egyaránt használható alkalmazás- és dialógus ablakként Alkalmazásunk ablaka, dialógusablakaink általában ebből származnak Menük (Menus & Toolbars) Program menüsor, státuszsor, áthelyezhető eszközsorok, kontextus menü MenuStrip, StatusStrip, ToolStrip, ContextMenuStrip Vezérlők (Controls) GUI-n elhelyezhető elemek, Java Swing komponensek „párja” Button, Label, TextBox, CheckBox, RadioButton, ListBox, ComboBox, TreeView, NumericUpDown, PictureBox, DateTimePicker, RichTextBox, WebBrowser, … Konténerek, elrendezések (Containers, Layouts) GUI elemek elhelyezésére. Kevésbé használtak, mint Java Swingben. Panel, SplitContainer, TabControl, GroupBox, TableLayoutPanel, FlowLayoutPanel 2
.NET WinForms – eseménykezelés Delegate C# alatt hasonló, mint C++-ban a függvény pointerek A GUI elemek egyes eseményeihez delegate-k definiáltak Callback A delegate-nek megfelelő formájú metódusba rakjuk az eseménykezelés megvalósítását A metódust hozzáadjuk a GUI elem adott eseményéhez Bekövetkezéskor ez a metódus meghívásra kerül Designer támogatás eseménykezeléshez Válasszuk ki az elemet amihez eseményt rendelnénk View | Properties Window kattintsunk a villám ikonra Keressük meg a megfelelő eseményt és duplaklikk! 3
Book Shop Könyvesbolt asztali alkalmazás Ügyfelek felvétele, listázása, stb. Könyvek beszerzése, listázása, stb. Könyvek eladása, eladások listázása, stb. A következő órákon felépített példa a Java Swingben megírt alkalmazásunk átirata lesz WinForms-ra
09-cs-GUI Indítsuk el a Visual Studio-t! Nyissuk meg a solutiont File | Open… | Project/Solution Keressük ki a BookShop-csharp.sln fájlt Megjegyzés: dupla klikk az sln fáljon megnyitja a VS-t és benne az adott solutiont Fordítsuk és futtassuk az alkalmazást! Build | Build solution (F6) Debug | Start Debugging (F5) Nézzük meg a megvalósított menüpontokat!
09-cs-GUI Vizsgáljuk meg a meglévő kódot! Model réteg Control réteg Customer.cs ügyfél adatai (property-k használata) BookShopDao.cs adatok kezelése Control réteg BookShopControl.cs Üzleti logika megvalósítása View réteg BookShopGui.cs alkalmazásablak AddCustomerDialog.cs dialógusablak új ügyfél adatainak bekérésére Program.cs az alkalmazás elindítására
Feladat „New Book” menüpont megvalósítása Ügyfelek felvételéhez analóg módon BookShopDao tárolja a könyveket memóriában Következő attribútumokat lehet megadni (Book.cs bean is ezeket tartalmazza): Author (TextBox) szerző Title (TextBox) könyv címe Year (NumericUpDown) kiadás éve Category (ComboBox) műfaj Price (TextBox) ár Piece (NumbericUpDown) készlet, darabszám Ancient (bool): Automatikusan állítsuk be, üzleti logika alapján (BookShopControl) 1900 előtt kiadott könyvekre igaz. Készítsünk ezen vezérlőkkel dialógusablakot Figyeljünk a guide line-okra! Kössük be az alkalmazásba eseménykezelésen keresztül
Házi feladat Sell Book menüpont kifejlesztése Memóriában lévő ügyfeleknek tudunk eladni Memóriában lévő könyveket tudjuk eladni Készítsünk új menüt (Sell), benne a Sell Book menüelemet Hatására egy új dialógusablak jelenjen meg 1-1 ComboBox-ban listázzuk ki a memóriában lévő könyvek címeit ill. ügyfelek neveit Az ügyfél adatai bal-, a kiválasztott könyv adatai jobb oldalt jelenjenek meg nem szerkeszthető módon Alul OK és Cancel gombok + eseménykezelés hozzá Debugoljuk az alkalmazást, figyeljük meg a szálakat! „Nézegessük” az egyes GUI elemek beállításait Készítsünk egy új Windows Application típusú projektet A Form1-be rakjunk cuccot gazdagon, játsszunk a Properties ablakkal 8
Linkek Windows Forms in the .NET Framework http://msdn.microsoft.com/en-us/library/96bef039.aspx System.Windows.Forms Namespace http://msdn.microsoft.com/en-us/library/system.windows.forms.aspx Egy kis magyarázat az órai példákhoz /pub/Alkalmazasfejlesztes/gyakorlat/nappali/kiegeszito_anyagok/alkfejl_06.pdf