IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Jednoduchá C# kalkulačka v okně

V tomto tutoriálu vytvoříme jednoduchou kalkulačku ve Windows Forms Application.

Jelikož je tento tutoriál pro nováčky, začneme se správným vytvořením nového projektu a nastavením věcí, které budeme potřebovat. Jdeme na to! Po spuštění Visual Studia klikneme na tlačítko vytvořit nový projekt, tam zvolíme Windows Forms Application a dole v okně zadáme název, jak by se měl projekt jmenovat a potvrdíme. Vytvoří se nám nový projekt. Dále v ilustračním obrázku je ukázáno, jak by to mělo vypadat.

Rozložení Visual studia - Windows Forms - Okenní aplikace v C# .NET

Kdyby Vám chyběl panel Toolbox, který se nachází vlevo na obrazovce, tak si ho můžete aktivovat nahoře v záložce View. Dále můžeme vidět, že vpravo nahoře v panelu Solution Explorer se nám vytvořila stromová architektura projektu. Dále velice často budeme používat panel Properties, kde jsou nastavení grafických prvků, které budeme přidávat do programu. Kdyby Vám též chyběl, tak si ho aktivujte v záložce View.

Začneme tím, že si vytvoříme vizuální stránku naší kalkulačky. Okno s designovou (vizuální) částí projektu vidíte uprostřed. Je tam už vytvořené prázdné pouzdro našeho programu. Po jednom kliknutí na toto pouzdro se nám zaktivuje panel Properties (vpravo dole), kde nastavujeme a upravujeme jeho vlastnosti. Ty vlastnosti tady nebudu vyjmenovávat, protože je jich poměrně dost, ale měli byste si je projet, abyste věděli, co všechno je možné nastavit. My využijeme jen nastavení Text: kalkulačka , Size: kde určíme rozměry našeho pouzdra a Name:kalkulacka.

Velice zdůrazňuji, že je důležité si pojmenovávat všechny vkládané prvky nějak rozumně. Poslouží to k lepší orientaci, která je v kódu nesmírně důležitá.

Dále do pouzdra přidáme z Toolboxu prvek Textbox, a jeho Name v Properties nastavíme na Name: zadaniTextBox. Také nezapomeneme nastavit Enabled: na False. Je to proto, abychom do toho okna nemohli vpisovat nějaký text. V tomhle kroku, kdo zná trochu ty prvky, může namítnou, proč nepoužijeme prvek Label. Samozřejmě i to je možnost, ale zvolil jsem variantu s Textboxem.

Samozřejmě každá kalkulačka musí obsahovat tlačítka. Ty přidáme obdobným způsobem jako Textbox, akorát tentokrát zvolíme prvek Button a každému nastavíme Text: podle tlačítka.

Ve finále by mohla vizuální stránka programu vypadat například takto:

Ukázka formuláře - Windows Forms - Okenní aplikace v C# .NET

Umístění prvků v pouzdře můžeme samozřejmě nastavit jednoduchým ovládáním pomoci myši. Stejně tak jako velikost a tvar (to však jde i v těch Properties jednotlivých prvků).

Teď přejdeme z vizuální stránky do kódové stránky. Uděláme to jednodušše tak, že dvakrát klikneme na naše pouzdro. Automaticky se nám otevře soubor: Form1.cs, kde se nám vytvořil počáteč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ý prvek v pouzdře má svoji metodu. V metodě kalkulačka (což je právě to naše pouzdro) definujeme náš Textbox.

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

Znamená to, že když náš program se spustí, tak výchozí text v TextBoxu bude "0". Dále definujeme pár proměnných, s kterýma budeme v průběhu pracovat. Pozor!!! Tyto proměnné musí být vně z metody kalkulačka. Takže je jednodušše umístěte pod tělo metody.

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

Budeme se přepínat mezi vizuální stránkou (dále jen vizuál) a kódovou stránkou (dále jen kód). Ve vizuální vždycky klikneme na prvek a tím se nám v kódu vytvoří automaticky metoda daného prvku.

Takže nyní se vrátíme do vizuálu, kde dvakrát klikneme na prvek: tlačítko 0, automaticky se nám vytvoří v kódu další metoda. Definujeme ji 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;
           }
       }

Jak funguje If a Else už jistě víte. Pokud ne, projeďte si předchozí tutoriál C# Kalkulačka v Console verzi. Co je zadání TextBox to víme také, to je prvek TextBox ve vizuálu. Lidsky: když text (obsah) prvku zadání TextBox se nebude rovnat "0", to znamená, že bude vypadat například "10", tak se k tomu textu (obsahu) přidá ((Button)sender)­.Text. To znamená, že se tam vloží Text tlačítka, které zmáčknete. A pokud obsah TextBoxu je "0", to znamená, že je ve výchozí pozici a tím pádem víme, že obsah je prázdný. Můžeme vložit první číslo.

Příklad: zapneme program (mimochodem program se spouští F5), tak uvidíme, že v TextBoxu je napsáno 0, tím pádem po zmáčknutí tlačíka s cifrou např. 5, nula se přepíše. Pokud zmáčkneme zase tlačítko 5, tak se to podívá na obsah TextBoxu a zjistí, že tam není nula, ale pětka a jenom přidá za ní další pětku. Tím pádem vidíme, že metoda pro tlačítko 0 se stává metodou pro každé tlačítko 0-9. (Určitě se ptáte, jak to, že tlačítka od 1-9 nevyužívají svoje metody? Je to jednoduché, protože jim bylo nastaveno ať využívají metodu tlačítka 0.)

Nastavení click události - Windows Forms - Okenní aplikace v C# .NET

Nastaví se to v Properties každého tlačítka (nahoře v tom panelu je malý blesk, po zmáčknutí se Vám objeví seznam, kde vyberete CLICK: kde vyberete jakou metodu má to tlačítko využívat).

Dále vyřešíme metody funkcí jako je (+, -, *, /). Jednodušše zase klikneme na tlačítka ve vizuálu a ono nám ty metody vytvoří 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á metoda uloží do proměnné cislo1 obsah textboxu a poté ho resetuje, aby bylo možné zadat další číslo. Přitom přidá proměnné funkce nějakou hodnotu (sčítání/odčí­tání/násobení/dě­lení).

Znova doporučuji, abyste používali Name tlačítek a tudíž i metod, tak aby dávaly smysl.

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 = "";
}

Metoda tlačítka "rovná se" zase přidává do proměnné cislo2 aktuální obsah TextBoxu. Dále rozpoznává podmínku o jakou funkci se jedná a následně provádí výpočty, které se ukládají do proměnné c. Poté je c vypisováno do TextBoxu (pro nás je to už výsledek příkladu).

Nesměji samozřejmě chybět metody, které budou zajišťovat tlačítka 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";
}

Metoda SmazatVse smaže celý příklad, zatímco metoda Smazat smaže jen aktuální obsah TextBoxu.

Celkový kód vypadá následovně:

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še :)


 

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 3057x (45.54 kB)
Aplikace je včetně zdrojových kódů v jazyce C#

 

Všechny články v sekci
Windows Forms - Okenní aplikace v C# .NET
Článek pro vás napsal joker.a
Avatar
Uživatelské hodnocení:
16 hlasů
Aktivity