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

2. diel - Jednoduchá kalkulačka v VB.NET Windows Forms

V minulom dieli seriálu, Úvod do Windows Forms aplikácií v VB.NET , sme si uviedli technológiu Windows Forms a vytvorili okno s textovým popisom.

V dnešnom dieli sa pozrieme na udalosti a vytvoríme jednoduchú kalkulačku. Bude vyzerať takto:

Kalkulačka v VB.NET v oknu - Okenné aplikácie vo VB.NET Windows Forms

Príprava formulára

Založte si nový Windows Forms projekt s názvom Kalkulacka. Formulár premenujeme na KalkulackaForm. Pri aplikáciách sa väčšinou začína práve návrhom formulára. Z Toolbox na neho natiahneme niekoľko kontroliek. Budeme potrebovať:

  • 2x Label
  • 1x Button
  • 2x NumericUpDown
  • 1x ComboBox

Label

Label už poznáme, jedná sa jednoducho o textový popis.

Ak indikátory nepoužívame z kódu, nemusíme ich pomenovávať. Ak áno, mali by sme im nastaviť vlastnosť Name (v oknu Properties je názov vlastnosti v zátvorke (Name)) a cez toto meno ku kontrolke potom z kódu pristúpime. Odporúčam si prepnúť zobrazenie vlastností z kategórií, na abecedný (prvé 2 ikonky v Properties oknu), vlastnosti nájdete rýchlejšie. Name je teda meno objektu, Text je to, čo je na objekte napísané. Z toho logicky vyplýva, že na formulári môžeme mať viac kontroliek s rovnakým textom, ale len jednu s určitým menom.

Jeden label bude slúžiť len ako návestie s textom "=", nastavte mu ho. Druhý Label bude slúžiť pre výpis výsledku a keďže do neho budeme programovo vkladať hodnotu, nastavíme jeho vlastnosť Name na vysledekLabel. Text nastavíme na hodnotu "0". Font výsledku môžeme zväčšiť na veľkosť 10.

Button

Button je jednoducho tlačidlo, ktoré v prípade stisku zavolá nejakú metódu (presnejšie vyvolá udalosť). V našom prípade sa bude tlačidlo menovať vypocitejButton a jeho Text bude nastavený na "Vypočítaj". Udalosť tlačidlu priradíme neskôr.

NumericUpDown

NumericUpDown je prvý kontrolka na zadávanie hodnoty, ktorú si uvedieme. V predvolenom nastavení do nej môžeme zadať len celé číslo. Toto správanie možno zmeniť nastavením vlastnosti DecimalPlaces, ktorá udáva počet desatinných miest. Túto hodnotu nastavme na 2 oboma kontrolkám. Tiež nastavíme vlastnosti Minimum a Maximum, v našom prípade minimum na nejakú nízku hodnotu a maximum na nejakú vysokú, napr. -1000000 a 1000000. Ak by sme chceli využiť maximálne hodnoty daného dátového typu, musíme limity nastaviť v kóde formulára pomocou vlastnosti maxvalue a MINVALUE tak na danom dátovom typu.

Výhodou zadávanie čísel touto kontrolkou je, že užívateľ nemôže zadať nezmyselnú hodnotu. Ak by sme číslo parsovali z textbox (ktorý si ukážeme v ďalších dieloch), mohla by naše aplikácie pri nevalidním vstupe spadnúť. Je vždy jednoduchšie vybrať správnu kontrolku ako ošetrovať užívateľský vstup.

Kontrolky pomenujeme ako cislo1NumericUpDown a cislo2NumericUp­Down. Všimnite si, že meno by malo vždy obsahovať aj typ kontrolky. Môžeme tak mať napr. VekLabel a vekNumericUpDown, kedy label je label pole na zadanie veku a numericUpDown je potom toto pole. Navyše sa v kóde potom lepšie orientuje. Niekedy sa používa aj cisloNmr, vypocitejBtn a podobne.

ComboBox

Sme skoro v cieli. ComboBox je Výjazdný zoznam s niekoľkými preddefinovanými prvkami. Prvky môžeme buď naklikať v návrhári alebo vložiť z kódu a to aj za behu programu. Toto platí pre všetky komponenty, všetky vlastnosti z návrhára môžeme nastavovať iz kódu. Niektoré pokročilé vlastnosti idú však nastaviť len z kódu a v návrhári nie sú.

Kontrolku pomenujeme operaceComboBox au vlastnosti Items klikneme na tlačidlo "...". Do novo otvoreného okna vypíšeme možnosti, ktoré v combobox pôjdu vybrať. Každú možnosť zapíšeme na samostatný riadok, v našom prípade to budú hodnoty "+", "-", "*", "/".

Položky combobox zo VB.NET vo Visual Studio - Okenné aplikácie vo VB.NET Windows Forms

Pozn .: Položkami nemusí byť len textové reťazce, ale aj objekty. Ukážeme si to neskôr.

Vybranú položku možno bohužiaľ nastaviť len z kódu.

Nastavené kontrolky usporiadame na formulár tak, ako bolo uvedené na začiatku článku.

Kód formulára

Presunieme sa do zdrojového kódu formulára. Už vieme, že to urobíme skratkou CTRL + ALT + 0 alebo pravým tlačítkom myši na formulár a View Code.

Vytvorte si konštruktor, Visual Studio Vám do neho ihneď vloží volanie metódy InitializeComponent (), v konstruktoru nastavíme vybranú položku pre operaceComboBox. Urobíme to nastavením vlastnosti SelectedIndex na 0, teda prvú položku:

Public Sub New()
    InitializeComponent()
    operaceComboBox.SelectedIndex = 0
End Sub

Z formulára máme samozrejme prístup ku všetkým jeho kontrolkám.

Do konstruktoru vkladáme ten kód, ktorý sa má vykonať po vytvorení formulára, ale to je snáď jasné. Keď aplikáciu spustíte, bude vybrané sčítanie:

Vybranie položky combobox v VB.NET - Okenné aplikácie vo VB.NET Windows Forms

Obsluha udalostí

Zostáva nám teda už len reagovať na udalosť kliknutí tlačidla. Presunieme sa z kódu späť na formulár a na tlačidlo 2x klikneme. V kóde nám pribudla nová metóda:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

End Sub

Všimnite si kľúčového slova Handles, to určuje čo všetko metóda obsluhuje. Ak by mala metóda obsluhovať viac kontroliek, oddeľte ich čiarkou. napr:

Sub ZpracujData() Handles btnWork.Click, tmrAutoSave.Tick

End Sub

Vráťme sa ešte do Designeri (klávesa Shift + F7) a označme tlačidlo. V oknu properties môžeme prepínať medzi Vlastnosťami a Udalosťami a to pomocou nižšie zvýraznených tlačidiel:

Udalosti vo Visual Studio - Okenné aplikácie vo VB.NET Windows Forms

Vidíme tu našej udalosť Click, ktorú odtiaľto môžeme odstrániť a prípadne znovu pridať. Niektoré kontrolky majú špeciálne udalosti, pre ktoré vygenerujeme metódy práve odtiaľ.

Nikdy neodstraňujte udalosti tak, že vymažete obslužnú metódu z kódu, designer by prestal fungovať a museli by ste jeho súbor opraviť (konkrétne odstrániť priradenie neexistujúce metódy do udalosti). Správne je to jedine cez designer.

Výpočet

Prejdime k samotnému výpočtu. Kód nebude nijako zložitý, jednoducho v obslužnej metóde tlačidla naselectujeme vybrané položky operaceComboBoxu a podľa toho vypočítame výsledok. Ten potom nastavíme ako text vysledekLabel. Nemali by sme zabudnúť ošetriť delenie nulou.

Kód obslužné metódy by mohol vyzerať takto:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim cislo1 = cislo1NumericUpDown.Value
    Dim cislo2 = cislo2NumericUpDown.Value
    Dim vysledek As Double

    Select Case operaceComboBox.SelectedIndex
        Case 0
            vysledek = cislo1 + cislo2
        Case 1
            vysledek = cislo1 - cislo2
        Case 2
            vysledek = cislo1 * cislo2
        Case 3
            If cislo2 = 0 Then
                MsgBox("Dělit nulou nelze")
                vysledek = 0
                Exit Select
            End If
            vysledek = cislo1 / cislo2
    End Select

    vysledekLabel.Text = vysledek
End Sub

Najprv si uložíme hodnoty z kontroliek do premenných, je to tak prehľadnejšie. K vybranej položke ComboBox sa dostaneme cez SelectedIndex, ktorý je typu integer a udáva poradie vybrané položky. Rovnako tak by sme mohli pracovať aj s jednoduchým textom položky cez SelectedItem.

V prípade nulového deliteľa zobrazujeme užívateľovi MsgBox pomocou rovnomennej metódy. Nakoniec do vysledekLabel vypíšeme výsledok.

Formulári ešte môžeme nastaviť Ikonu cez vlastnosť Icon (vyberieme súbor s ikonkou), text nastavíme na "Kalkulačka" a StartPosition na CenterScreen. Formulár sa tak vytvorí uprostred obrazovky. Ak nastavíme FormBorderStyle na hodnotu FixedSingle, nepôjde formulár rozťahovať, čo sa pre našu aplikáciu hodí. Rovnako tak môžeme zakázať maximalizáciu okna pomocou vlastnosti MaximizeBox.

Kód je ako vždy v prílohe.

Nabudúce, PRIPOMIENKOVÉ narodenín v VB.NET - Návrh formulárov , si vytvoríme zložitejšie aplikáciu s viacerými formulármi, bude sa jednať o pripomínač narodenín.


 

Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 292x (136.48 kB)
Aplikácia je vrátane zdrojových kódov v jazyku VB

 

Predchádzajúci článok
Úvod do Windows Forms aplikácií v VB.NET
Všetky články v sekcii
Okenné aplikácie vo VB.NET Windows Forms
Preskočiť článok
(neodporúčame)
PRIPOMIENKOVÉ narodenín v VB.NET - Návrh formulárov
Článok pre vás napísal Michal Žůrek - misaz
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor se věnuje tvorbě aplikací pro počítače, mobilní telefony, mikroprocesory a tvorbě webových stránek a webových aplikací. Nejraději programuje ve Visual Basicu a TypeScript. Ovládá HTML, CSS, JavaScript, TypeScript, C# a Visual Basic.
Aktivity