Szúdoku megoldás-WPF-ab - Programozás tanítása

Tartalomhoz ugrás
Szúdoku feladat megoldása
WPF projekt létrehozása

9. feladat

Készítsen grafikus alkalmazást a következő feladatok megoldására, amelynek projektjét sudokuGUI néven mentse el!
Válassza a WPF App (.NET Framework) projektet!
Adja meg a projekt nevét és kezdheti a felület kialakítását.
10. feladat a grafikus felület kialakítása

a) feladat

Az új feladványok rögzítésre szolgáló alkalmazás felületét alakítsa ki a minta szerint! Az ablak szélessége 540 képpont, magassága 210 képpont legyen, címsorában a „Sudoku-ellenőrző” szöveget jelenítse meg!
Bármely vezérlőelem tulajdonságát beállíthatja XAML szerkesztőben. Az ablak méreteinek meghatározásához a Width és Height tulajdonságokra van szükség.
A vezérlők tulajdonságait megadhatja a Properties Windows -ban is, amit az F4 billentyű lenyomásával tud előhívni.
Az ablak címének átírását a Title tulajdonság módosításával éri el.
Alakítsa ki a felületet a minta szerint!
A szükséges vezérlőket legegyszerűbben a Toolbox-ról húzhatja be. Ha a ToolBox nem látszik, a Ctrl+Alt+X segítségével hozhatja elő.
Alkalmazandó vezérlők
A későbbi feladat szerint, ha változik a beírt feladvány, akkor változnia kell a hossz utáni értéknek is.
Ezt legegyszerűbb úgy megoldani, hogy a hosszértéknek külön Label-t veszünk fel.
Az elemek pozícionálást segítik a vonalzók. Törekedjen arra, hogy az elemeket egymáshoz igazítsa! Ebben a felvillanó piros vonalak segítenek.
Tipp
Érdemes az XAML leíró kódot rendezni a tulajdonságok külön sorba helyezésével. Nagymértékben segíti az áttekinthetőséget.
Tulajdonságok ismertetése
Width - szélesség
Height - magasság
Content - tartalom, pld. Label esetén
Text - tartalom, pld. TextBox esetén

Margin - margó
A margó utáni első érték a vízszintes, a második érték a függőleges eltolás.
HorizontalAlignment - a vezérlő vízszintes igazítása
VerticalAlignment - a vezérlő függőleges igazítása
HorizontalContentAlignment - a tartalom vízszintes igazítása

b) feladat

A méret beállítására szolgáló szöveges beviteli mező alapértelmezett értéke 4 legyen! A mező értékét csak a „+” és „-” gombok segítségével lehessen változtatni a 4...9 intervallumban (4≤x≤9)!
Keresse meg az első TextBox-ot és a Text tulajdonság értékét módosítsa 4-re!
Mivel a későbbiekben szeretnénk olvasni és írni is az értrékét, tudnunk kell rá hivatkozni. A hivatkozás névvel történik. Nevet kétféle módon is hozzárendelhetünk.
1) Beírjuk az XAML szerkesztőben a következőt : Name="txtMeret"

2) Kiválasztjuk a vezérlőt és a Properties Windows -ban megadjuk a Name értékét.
A konvenció szerint, a vezérlő nevének első néhány betűje utaljon magára a vezérlőre és utána jöhet az általunk kitalált név.
Mivel a mező értékét csak a + és - gombokkal lehet módosítani, meg kell akadályozni a beleírást. Ezt az IsEnabled tulajdonság false-ra állításával érhetjük el.
Mivel szeretnénk használni a két + és - feliratú nyomógombot, érdemes ezeket a vezérlőket is elnevezni.
Általánosságban javasolt minden olyan vezérlőnek nevet adni, amelyekhez a későbbiekben eseménykezelő metódust kívánunk hozzárendelni.
A két nyomógombnak adjuk most a btnCsokkent és btnNovel neveket!
Eseménykezelő hozzárendelése
Amennyiben duplán rákattintunk a vezérlő grafikus képére, automatikusan létrehozza az eseménykezelő metódust és regisztrálja a vezérlőhöz.
A vezérlő grafikus képére történő kattintással csak egyféle eseményhez tudunk metódust generálni. Amennyiben másfajta eseményt szeretnénk regisztrálni, érdemes a Properties Window-t használni.
Gyakorlásként a második nyomógombhoz ezt az utat választjuk:
    • Elsőnek kiválasztjuk az Events fület,
    • majd a listában kikeressük a regisztrálandó esemény nevét és duplán kattintunk a név melletti üres mezőre.
Hasonlóan mint az első módszernél automatikusan jön létre a metódus. A metódus neve a következő formátumú: vezérlő neve_esemény neve
Méret csökkentése
Ki kell olvasni a txtMeret nevű beviteli mező értékét (Text), de mivel az String típusú, át is kell alakítani számmá. Ezután már csökkenthetjük az értékét 1-gyel. Az alábbi hiba azért lép fel, mivel a számot nem konvertáltuk vissza szöveggé.
Lehetséges javításai az előbbi hibának:
txtMeret.Text=Convert.ToString(Convert.ToInt32(txtMeret.Text)-1);
txtMeret.Text=""+(int.Parse(txtMeret.Text)-1);
txtMeret.Text=(int.Parse(txtMeret.Text)-1).ToString();
Szükséges a határok figyelése is, hogy ne lehessen levinni 4 alá az értékét. Bevezetünk egy aktErtek nevű segédváltozót, amivel átláthatóbb és rövidebb kódot kapunk.
A módosított aktErtek szöveggé alakításának legegyszerűbb, implict módját választottuk azzal, hogy egy üres karakterláncot adunk hozzá.
Méret növelése
Hasonló logikával elkészítjük a btnNovel_Click metódus kódját is.
Vissza a tartalomhoz