3. HelloWPF2

3.4. C# kód

Možná jste si všimli, že pokud v okně Solution Explorer  kliknete na ikonu pro detailnější rozpad stromové struktury projektu u souboru MainWindow.xaml, zobrazí se další soubor s názvem MainWindow.xaml.cs. Jedná se o tzv. Code Behind, který obsahuje kód bsluhující veškeré události vyvolané uživatelem při manipulaci s aplikací, a také sám s kontrolkami manipuluje. My v tomto souboru budeme definovat obsluhu události při stisku některého z tlačítek. Tento soubor obsahuje veřejně přístupnou částečnou třídu (partial) MainWindow odvozené od základní třídy Window se stejným jmenným prostorem HelloWPF2 (prozatím nás tato detailní fakta ještě nemusí zajímat, protože jsme zatím nezískali potřebné teoretické znalosti týkající se třídy, dědění, modifikátorů přístupu, atd.) - viz Kód 1. 

V XAML jsme definováním události a připojením handleru (obsluhy) události pro stisk tlačítka (událost Click) u kontrolek typu Button, tj. BtnStiskni, BtnVymaz a BtnKonec vygenerovali v této třídě soukromé metody bez návratu (private void) s příslušným názvem tlačítek doplněné o podtržítko s názvem události např. BtnStiskni_Click. Do těla těchto metod budeme vkládat zdrojové kódy v C# pro obsluhu události stisknutí tlačítka (jednoduše řečeno, když stiskneme tlačítko, provede se kód v této metodě). Pro doplnění uveďme, že argumenty těchto metod jsou dva. První parametr sender typu Object představuje objekt, který událost vyvolal a parametr e typu RoutedEventArgs obsahuje informaci a data o události, která byla vyvolána.

namespace HelloWPF2
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
 
        private void BtnStiskni_Click(object sender, RoutedEventArgs e)
        {

        }
 
        private void BtnVymaz_Click(object sender, RoutedEventArgs e)
        {

        }
 
        private void BtnKonec_Click(object sender, RoutedEventArgs e)
        {

        }
    }
}

Kód 1: Code Behind - obsluha události stisknutí tlačítek

Nyní bychom měli definovat kód, který bude proveden po stisku tlačítka BtnStiskni, tj. tělo metody BtnStiskni_Clik. V této metodě budeme psát zdrojový kód pro výpis textu kontrolky TxbVypis (kontrolka typu TextBlock). Dříve jsme text definovali pomocí vlastnosti Title v okně Properties. Nyní provedeme to samé, ale pomocí C# kódu, který umístíme do obsluhy události, tedy do těla metody BtnStiskni_Clik. Jak již bylo řečeno, obsluha události je metodou třídy MainWindow. Tato třída obsahuje jak metody, tak i samotné kontrolky (představují objekty třídy). Abychom se podívali do obsahu třídy, lze využít klíčové slovo this. Toto klíčové slovo využijeme v těle metody BtnStiskni_Clik, kde si pomocí tečkové notace vybereme z nabízeného seznamu kontrolku TxbVypis - viz Obrázek 1. Seznam, který se objeví po zadání this., obsahuje tzv. datové složky (anglicky Fields) a metody této třídy.


Obrázek 1: Přístup k obsahu třídy pomocí klíčového slova this

Po výběru tlačítka si pomocí tečkové notace vybereme vlastnost kontrolky Text - viz Obrázek 2.


Obrázek 2: Přístup k vlastnosti kontrolky TxbVypis

Pomocí operátoru přiřazení následně přiřadíme do kontrolky textový řetězec "Hello, World!" a ukončíme výraz středníkem - viz Kód 2. Pro větší přehlednost kódu jsme doplnili o řádek výše komentář, co se ve výrazu děje. Komentáře oceníte zejména tehdy, pokud se ke kódu vracíte po delší době.

private void BtnStiskni_Click(object sender, RoutedEventArgs e)
{
    //výpis textu
    this.TxbVypis.Text = "Hello, World!";
}

Kód 2: Metoda BtnStiskni_Click

Další metodou, jejíž tělo musíme specifikovat, je metoda BtnVymaz_Click. V této metodě bude provedeno vymazání textu z kontrolky TxbVypis. Výmaz textu zajistíme přiřazením prázdného textového řetězce, tj. nic mezi dvěma uvozovkami - viz Kód 3.

private void BtnVymaz_Click(object sender, RoutedEventArgs e)
{
    //vymazání textu v kontrolce
    this.TxbVypis.Text = "";
}

Kód 3: Metoda BtnVymaz_Click

Jako poslední musíme vytvořit zdrojový kód pro metodu BtnKonec_Click. Zde budeme požadovat zavření formuláře (okna), které obsahuje všechny kontrolky. To provede pomocí metody Close(). Prázdné závorky značí, že tato metoda nepotřebuje žádný argumenty (vstupní parametry) - viz Kód 4.

private void BtnKonec_Click(object sender, RoutedEventArgs e)
{
    //zavření formuláře
    this.Close();
}

Kód 4: Metoda BtnKonec_Click