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

Jednoduchá C # kalkulačka v okne

V tomto tutoriále vytvoríme jednoduchú kalkulačku vo Windows Forms Application.

Keďže je tento tutoriál pre nováčikov, začneme so správnym vytvorením nového projektu a nastavením vecí, ktoré budeme potrebovať. Ideme na to! Po spustení Visual Studia klikneme na tlačidlo vytvoriť nový projekt, tam zvolíme Windows Forms Application a dole v okne zadáme názov, ako by sa mal projekt menovať a potvrdíme. Vytvorí sa nám nový projekt. Ďalej v ilustračnom obrázku je ukázané, ako by to malo vyzerať.

Rozloženie Visual štúdia - Okenné aplikácie v C # .NET vo Windows Forms

Keby Vám chýbal panel Toolbox, ktorý sa nachádza vľavo na obrazovke, tak si ho môžete aktivovať hore v záložke View. Ďalej môžeme vidieť, že vpravo hore v paneli Solution Explorer sa nám vytvorila stromová architektúra projektu. Ďalej veľmi často budeme používať panel Properties, kde sú nastavenia grafických prvkov, ktoré budeme pridávať do programu. Keby Vám tiež chýbal, tak si ho aktivujte v záložke View.

Začneme tým, že si vytvoríme vizuálnu stránku našej kalkulačky. Okno s dizajnovou (vizuálne) častí projektu vidíte uprostred. Je tam už vytvorené prázdne puzdro nášho programu. Po jednom kliknutí na toto puzdro sa nám zaktivuje panel Properties (vpravo dole), kde nastavujeme a upravujeme jeho vlastnosti. Tie vlastnosti tu nebudem vymenovávať, pretože je ich pomerne dosť, ale mali by ste si ich prejsť, aby ste vedeli, čo všetko je možné nastaviť. My využijeme len nastavenie Text: kalkulačka, Size: kde určíme rozmery nášho puzdra a Name: kalkulacka.

Veľmi zdôrazňujem, že je dôležité si pomenovávať všetky vkladané prvky nejako rozumne. Poslúži to k lepšej orientácii, ktorá je v kóde nesmierne dôležitá.

Ďalej do puzdra pridáme z Toolbox prvok textbox, a jeho Name v Properties nastavíme na Name: zadaniTextBox. Tiež nezabudneme nastaviť Enabled: na False. Je to preto, aby sme do toho okna nemohli vpisovať nejaký text. V tomto kroku, kto pozná trochu tie prvky, môže namietnu, prečo nepoužijeme prvok Label. Samozrejme aj to je možnosť, ale zvolil som variantu s textbox.

Samozrejme každá kalkulačka musí obsahovať tlačidla. Tie pridáme obdobným spôsobom ako textbox, akurát tentoraz zvolíme prvok Button a každému nastavíme Text: podľa tlačidla.

Vo finále by mohla vizuálna stránka programu vyzerať napríklad takto:

ukážka formulára - Okenné aplikácie v C # .NET vo Windows Forms

Umiestnenie prvkov v puzdre môžeme samozrejme nastaviť jednoduchým ovládaním pomocou myši. Rovnako tak ako veľkosť a tvar (to však ide aj v tých Properties jednotlivých prvkov).

Teraz prejdeme z vizuálnej stránky do kódovej stránky. Urobíme to jednoducho tak, že dvakrát klikneme na naše puzdro. Automaticky sa nám otvorí súbor: Form1.cs, kde sa nám vytvoril počiatočné kód.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication2
{
    public partial class kalkulacka : Form
    {
        public kalkulacka()
        {
            InitializeComponent();
        }

        private void kalkulacka_Load(object sender, EventArgs e)
        {

        }


    }
}

Každý vložený prvok v puzdre má svoju metódu. V metóde kalkulačka (čo je práve to naša puzdro) definujeme náš textbox.

public kalkulacka()
{
    InitializeComponent();
    zadaniTextBox.Text = "0";
}

Znamená to, že keď náš program sa spustí, tak predvolený text v textbox bude "0". Ďalej definujeme pár premenných, s ktorými budeme v priebehu pracovať. Pozor !!! Tieto premenné musia byť mimo z metódy kalkulačka. Takže je jednoducho umiestnite pod telo metódy.

int cislo1;
int cislo2;
string funkce;
int c = 0;

Budeme sa prepínať medzi vizuálnou stránkou (ďalej len vizuál) a kódovou stránkou (ďalej len kód). Vo vizuálne vždycky klikneme na prvok a tým sa nám v kóde vytvorí automaticky metóda daného prvku.

Takže teraz sa vrátime do vizuálu, kde dvakrát klikneme na prvok: tlačidlo 0, automaticky sa nám vytvorí v kóde ďalšia metóda. Definujeme ju takto:

private void button0_Click(object sender, EventArgs e)
       {
           if (zadaniTextBox.Text != "0")
           {
               zadaniTextBox.Text = zadaniTextBox.Text + ((Button)sender).Text;
           }
           else
           {
               zadaniTextBox.Text = ((Button)sender).Text;
           }
       }

Ako funguje If a Else už iste viete. Ak nie, prejdite si predchádzajúce tutoriál C# Kalkulačka v Console verzii. Čo je zadanie TextBox to vieme tiež, to je prvok TextBox vo vizuálu. Ľudsky: keď text (obsah) prvku zadaní TextBox sa nebude rovnať "0", to znamená, že bude vyzerať napríklad "10", tak sa k tomu textu (obsahu) pridá ((Button) sender) .Texty. To znamená, že sa tam vloží Text tlačidla, ktoré stlačíte. A ak obsah textbox je "0", to znamená, že je vo východiskovej pozícii a tým pádom vieme, že obsah je prázdny. Môžeme vložiť prvé číslo.

Príklad: zapneme program (mimochodom program sa spúšťa F5), tak uvidíme, že v textbox je napísané 0, tým pádom po stlačení tlačidlami s cifrou napr. 5, nula sa prepíše. Ak stlačíme zase tlačidlo 5, tak sa to pozrie na obsah textbox a zistí, že tam nie je nula, ale päťka a iba pridá za ním ďalšie päťku. Tým pádom vidíme, že metóda pre tlačidlo 0 sa stáva metódou pre každé tlačidlo 0-9. (Určite sa pýtate, ako to, že tlačidlá od 1-9 nevyužívajú svoje metódy? Je to jednoduché, pretože im bolo nastavené nech využívajú metódu tlačidla 0.)

Nastavenie click udalosti - Okenné aplikácie v C # .NET vo Windows Forms

Nastaví sa to v Properties každého tlačidla (hore v tom paneli je malý blesk, po stlačení sa vám objaví zoznam, kde vyberiete CLICK: kde vyberiete akú metódu má to tlačidlo využívať).

Ďalej vyriešime metódy funkcií ako je (+, -, *, /). Jednoducho zase klikneme na tlačidlá vo vizuálu a ono nám tie metódy vytvoria samo.

private void plusButton_Click(object sender, EventArgs e)
{
    cislo1 = int.Parse(zadaniTextBox.Text);
    zadaniTextBox.Text = "0";
    funkce = "scitani";
}

private void minusButton_Click(object sender, EventArgs e)
{
    cislo1 = int.Parse(zadaniTextBox.Text);
    zadaniTextBox.Text = "0";
    funkce = "odcitani";
}

private void nasobeniButton_Click(object sender, EventArgs e)
{
    cislo1 = int.Parse(zadaniTextBox.Text);
    zadaniTextBox.Text = "0";
    funkce = "nasobeni";
}

private void deleniButton_Click(object sender, EventArgs e)
{
    cislo1 = int.Parse(zadaniTextBox.Text);
    zadaniTextBox.Text = "0";
    funkce = "deleni";
}

Každá metóda uloží do premennej číslo1 obsah textbox a potom ho resetuje, aby bolo možné zadať ďalšie číslo. Pritom pridá premennej funkcie nejakú hodnotu (sčítanie / odčítanie / násobenie / delenie).

Znova odporúčam, aby ste používali Name tlačidiel a teda aj metód, tak aby dávali zmysel.

private void rovnaseButton_Click(object sender, EventArgs e)
{
    cislo2 = int.Parse(zadaniTextBox.Text);

    if (funkce == "scitani")
    {
        c = cislo1 + cislo2;
    }
    else if (funkce == "odcitani")
    {
        c = cislo1 - cislo2;
    }
    else if (funkce == "nasobeni")
    {
        c = cislo1 * cislo2;
    }
    else if (funkce == "deleni")
    {
        c = cislo1 / cislo2;
    }

    zadaniTextBox.Text = c.ToString();
    funkce = "";
}

Metóda tlačidla "rovná sa" zase pridáva do premennej číslo2 aktuálny obsah textbox. Ďalej rozpoznáva podmienku o akú funkciu sa jedná a následne vykonáva výpočty, ktoré sa ukladajú do premennej c. Potom ich c vypisovanie do textbox (pre nás je to už výsledok príkladu).

Nesmú samozrejme chýbať metódy, ktoré budú zabezpečovať tlačidla C a CE.

private void smazatVseButton_Click(object sender, EventArgs e)
{
    zadaniTextBox.Text = "0";
    funkce = "";
}

private void smazatButton_Click(object sender, EventArgs e)
{
    zadaniTextBox.Text = "0";
}

Metóda SmazatVse zmaže celý príklad, zatiaľ čo metóda Zmazať zmaže len aktuálny obsah textbox.

Celkový kód vyzerá nasledovne:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace kalkulacka
{
    public partial class kalkulacka : Form
    {
        public kalkulacka()
        {
            InitializeComponent();
            zadaniTextBox.Text = "0";
        }

        int cislo1;
        int cislo2;
        string funkce;
        int c = 0;

        private void button0_Click(object sender, EventArgs e)
        {
            if (zadaniTextBox.Text != "0")
            {
                zadaniTextBox.Text = zadaniTextBox.Text + ((Button)sender).Text;
            }
            else
            {
                zadaniTextBox.Text = ((Button)sender).Text;
            }
        }

        private void plusButton_Click(object sender, EventArgs e)
        {
            cislo1 = int.Parse(zadaniTextBox.Text);
            zadaniTextBox.Text = "0";
            funkce = "scitani";
        }

        private void minusButton_Click(object sender, EventArgs e)
        {
            cislo1 = int.Parse(zadaniTextBox.Text);
            zadaniTextBox.Text = "0";
            funkce = "odcitani";
        }

        private void nasobeniButton_Click(object sender, EventArgs e)
        {
            cislo1 = int.Parse(zadaniTextBox.Text);
            zadaniTextBox.Text = "0";
            funkce = "nasobeni";
        }

        private void deleniButton_Click(object sender, EventArgs e)
        {
            cislo1 = int.Parse(zadaniTextBox.Text);
            zadaniTextBox.Text = "0";
            funkce = "deleni";
        }

        private void rovnaseButton_Click(object sender, EventArgs e)
        {
            cislo2 = int.Parse(zadaniTextBox.Text);

            if (funkce == "scitani")
            {
                c = cislo1 + cislo2;
            }
            else if (funkce == "odcitani")
            {
                c = cislo1 - cislo2;
            }
            else if (funkce == "nasobeni")
            {
                c = cislo1 * cislo2;
            }
            else if (funkce == "deleni")
            {
                c = cislo1 / cislo2;
            }

            zadaniTextBox.Text = c.ToString();
            funkce = "";
        }

        private void smazatVseButton_Click(object sender, EventArgs e)
        {
            zadaniTextBox.Text = "0";
            funkce = "";
        }

        private void smazatButton_Click(object sender, EventArgs e)
        {
            zadaniTextBox.Text = "0";
        }




    }
}

A to je všetko :)

V nasledujúcom kvíze, Záverečný test - Windows Forms v C # .NET, si vyskúšame nadobudnuté skúsenosti z kurzu.


 

Stiahnuť

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

Stiahnuté 3065x (45.54 kB)
Aplikácia je vrátane zdrojových kódov v jazyku C#

 

Všetky články v sekcii
Okenné aplikácie v C # .NET vo Windows Forms
Preskočiť článok
(neodporúčame)
Záverečný test - Windows Forms v C # .NET
Článok pre vás napísal joker.a
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Aktivity