IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

4. diel - Návrh formulára pre kalkulačku v C # .NET WPF

V minulej lekcii, Pozíciovanie v C # .NET WPF , sme sa naučili pozicový ovládacie prvky v okne. Dnes si v C# .NET tutoriálu vytvoríme prvú plnohodnotnú aplikáciu, bude sa jednať o jednoduchú kalkulačku.

Návrh formulára

Pri programovaní aplikácií sa väčšinou začína návrhom formulárov. Rovno ukážem ako bude vyzerať, vzápätí si ho nakódujeme.

Kalkulačka v C# .NET WPF - Okenné aplikácie v C # .NET WPF

Vytvorte si nový projekt s názvom Kalkulacka, titulok okna nastavte na "Kalkulačka". Oknu pridajte atribút:

WindowStartupLocation="CenterScreen"

Tým docielite to, že sa okno po spustení aplikácie zobrazí v strede obrazovky.

Grid

Hoci existuje niekoľko spôsobov, ako výslednej podoby formuláre dosiahnuť, my celý formulár postavíme na prvku Grid.

Doteraz sme Grid brali ako jednoduchý panel, do ktorého možno vkladať nejaké ďalšie prvky. Grid je však už podľa názvu mriežka. V predvolenom nastavení má len jednu bunku (jeden riadok a jeden stĺpec).

My sa teraz presunieme do grafického návrhára a klikneme doprostred okná. Tým sa označí jeho vnútornú časť, čo je <Grid>. Ten obsahuje každé novovytvorené okno, bez neho by sme totiž mali problém pridať na formulár viacerých prvkov. U označeného gridu sa nad horným a ľavým okrajom zobrazí "koľajnice", na ktorých môžeme myšou označiť bod, kde chceme rozdeliť riadok alebo stĺpec. Týmto spôsobom vytvorte tabuľku o 2 riadkoch a 5 stĺpcoch. Do buniek mriežky neskôr vložíme jednotlivé prvky formulára.

Rozdelenie Gridu v C# .NET WPF aplikácii - Okenné aplikácie v C # .NET WPF

V XAML kóde sa vnútri elementu <Grid> objavili 2 nové elementy: RowDefinitions a ColumnDefinitions. Jedná sa samozrejme o definície riadkov a stĺpcov, ktoré návrhár vygeneroval. V kódu je veľa absolútnych veľkostí a preto ho upravíme do nasledujúcej podoby:

<Grid Margin="10">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="50"/>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="50"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="30"/>
    </Grid.RowDefinitions>
</Grid>

U samotného elementu <Grid> nastavíme vonkajší okraj Margin na 10 DIP. Vďaka tomu nebudú ovládacie prvky v mriežke natesnané až ku kraju okna.

V definícii stĺpcov máme 5 stĺpcov, u ktorých definujeme ich šírku. Keď sa pozriete na formulár hotové kalkulačky, sú tu 2 polia pre zadanie čísel a jedno pre zobrazenie výsledku. Pre počítanie s veľkými číslami potrebujeme viac miesta a formulár roztiahneme, Grid by na to mal zareagovať a roztiahnuť tieto 3 bunky aj s ich podelementy. Naopak pole s výberom početné operácie a so značkou "rovná sa" by mala mať stále rovnakú šírku. Preto majú tieto 2 stĺpce pevne nastavenú veľkosť 50 DIP. Ostatní majú nastavenú hodnotu *, tie potom rovnomerne vyplní zvyšné miesto.

Niekedy sa nám hodí upresniť aj túto výplň, napr. Aby bol niektorý vypĺňajúci stĺpec 2x tak široký ako ostatní alebo polovičný. Zapísali by sme to ako 2* alebo 0.5*.

U definícií riadku je to obdobné, druhý riadok je vysoký presne 30 DIP, prvý riadok vyplní zvyšok okna.

Všetko ide samozrejme nastaviť aj cez grafický designer, ale už poznáte, že je to značne pracnejšie. A bude horšie :)

Ovládacie prvky

Do elementu <Grid> vložíme za koniec definície riadkov niekoľko ďalších prvkov.

Button

Začnime nám už známym tlačidlom:

<Button Content="Vypočítej" Width="80" VerticalAlignment="Center" Grid.Row="1" Grid.Column="2"/>

Atribút Content udáva textový popis, ďalej nastavujeme šírku na 80 DIP a zvislé zarovnanie na stred. Vodorovné zarovnanie nemusíme nastavovať, pretože je pevne daná šírka, tlačidlo sa bude vodorovne centrovať.

Dôležité sú atribúty Grid.Row a Grid.Column, ktoré udávajú do ktorého riadku a stĺpca mriežky sa má prvok vložiť. Asi vás neprekvapí, že indexy sú od nuly.

Textbox

TextBox predstavuje pole pre zadanie textu. Tá budeme potrebovať dve, pridajte si ich kód ďalej do elementu <Grid>:

<TextBox VerticalAlignment="Center" Grid.Row="0" Grid.Column="0" Margin="0,0,10,0" Text="0" />
<TextBox VerticalAlignment="Center" Grid.Row="0" Grid.Column="2"  Margin="0,0,10,0" Text="0" />

Keďže TextBox y sú vložené v prvom riadku tabuľky, ktorého výška sa rozťahuje s formulárom, budeme ich zvisle centrovať. Pravý vonkajší okraj nastavíme na 10 DIP a text na 0 (čo je predvolený vstup snáď všetkých kalkulačiek). Nezabudneme tiež zadať správne súradnice bunky gridu.

Ak by sme chceli v niektorej z budúcich aplikácií zadávať viacriadkový text, stačí prvkom TextBox nastaviť nasledujúce dva atribúty:

TextWrapping="Wrap" AcceptsReturn="True"

ComboBox

ComboBox je rozbaľovací zoznam o niekoľkých položkách. V našej aplikácii poslúži k výberu operácie z prednastavených typov, ktorými sú +, -, *, /.

Jeho kód bude nasledujúce:

<ComboBox VerticalAlignment="Center" Grid.Row="0" Grid.Column="1"  Margin="0,0,10,0" SelectedIndex="0">
    <ComboBoxItem Content="+"/>
    <ComboBoxItem Content="-"/>
    <ComboBoxItem Content="*"/>
    <ComboBoxItem Content="/"/>
</ComboBox>

SelectedIndex označuje index vybrané položky (tu prvý). Jednotlivé položky sú vnorené v elemente <ComboBox> ako elementy <ComboBoxItem>, kde atribút Content určuje ich textový popis. Ak by nám nestačil textový obsah položiek, môžeme miesto elementov <ComboBoxItem> vložiť prakticky čokoľvek, napr. Obrázky alebo farby.

TextBlock

Ako posledný umiestnime do gridu nám už známe elementy TextBlock:

<TextBlock Grid.Row="0" Grid.Column="3" VerticalAlignment="Center" HorizontalAlignment="Center">=</TextBlock>
<TextBlock Grid.Row="0" Grid.Column="4" VerticalAlignment="Center" HorizontalAlignment="Center">0</TextBlock>

Prvá je znamienko "rovná sa" medzi druhým číslom a výsledkom, druhý je samotný text s výsledkom.

Formulár máme hotový. Môžete si ho skúsiť spustiť a roztiahnuť. Všetky ovládacie prvky sa krásne prispôsobujú vďaka svojej relatívnej pozícii.

Kalkulačka v C# .NET WPF - Okenné aplikácie v C # .NET WPF

Môžete si ešte nastaviť ikonku okná, to urobíte tak, že pretiahnete súbor typu .ico na projekt v okne Solution Exploreri. Teraz stačí pridať oknu atribút Icon s názvom tohto súboru. Môžete rovno aj nastaviť minimálnu šírku a výšku okna, aby sa okno nedalo príliš zmenšiť.

<Window x:Class="Kalkulacka.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Kalkulačka" Height="134" Width="388" MinWidth="388" MinHeight="134" WindowStartupLocation="CenterScreen" Icon="kalkulacka.ico">

V budúcej lekcii, Code Behind v C # .NET WPF a dokončenie kalkulačky , naprogramujeme logickú časť aplikácie a tiež si povieme ako WPF funguje pod pokrievkou.


 

Predchádzajúci článok
Pozíciovanie v C # .NET WPF
Všetky články v sekcii
Okenné aplikácie v C # .NET WPF
Preskočiť článok
(neodporúčame)
Code Behind v C # .NET WPF a dokončenie kalkulačky
Článok pre vás napísal David Hartinger
Avatar
Užívateľské hodnotenie:
2 hlasov
David je zakladatelem ITnetwork a programování se profesionálně věnuje 15 let. Má rád Nirvanu, nemovitosti a svobodu podnikání.
Unicorn university David sa informačné technológie naučil na Unicorn University - prestížnej súkromnej vysokej škole IT a ekonómie.
Aktivity