2. PrevodSekundWPF

2.4. C#

V kódu XAML jsme definováním události a připojením handlerů (obsluhy) události Click pro stisk tlačítek u kontrolek typu Button, tj. BtnPrevod a BtnKonec vygenerovali v částečné veřejné třídě MainWindow dvě soukromé metody bez návratu BtnPrevod_Click a BtnKonec_Click - viz Kód 1.

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }
 
    private void BtnPrevod_Click(object sender, RoutedEventArgs e)
    {
 
    }
 
    private void BtnKonec_Click(object sender, RoutedEventArgs e)
    {
 
    }
}

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

Do těla metody BtnPrevod_Click budeme vkládat zdrojový kód v C# pro převod zadaného celkového počtu sekund. Prvním krokem musí být deklarace celočíselných proměnných, které budeme v těle metody využívat - viz Kód 2. 

//deklarace celočíselných proměnných
int celkem, hodin, minut, sekund;

Kód 2: Deklarace celočíselných proměnných pro metody BtnPrevod_Click 

Pro naplnění celočíselné proměnné celkem, která bude obsahovat celkový počet zadaných sekund, využijeme metodu TryParse() pro převod načteného textu do celého čísla. Metoda je implementována v datovém typu (ve třídě) celého čísla int. Tato metoda s výstupním parametrem celkem využívá klíčové slovo out, které je umístěno před název výstupního parametru (pozor na podmínku, že parametr musí být v dané metodě inicializován - naplněn). Celkovým výstupem této metody je informace, zda došlo ke konverzi, či nikoliv (datový typ bool). Proto tuto informaci využijeme v příkazu pro rozhodování if, kde do podmínky umístíme dotyčnou konverzi. Pokud tato konverze proběhne, umožníme provádění dalšího kódu, kde bude provedeno celočíselné dělení pro určení počtu hodin a zbytku po celočíselném dělení, abychom mohli postupně vypočítat počty minut a sekund. Postup je stejný jako v případě konzolové aplikace pro převod sekund, která byla popsána v předchozí kapitole. Pokud nedojde ke konverzi, tzn. bude provedena větev else, přepneme (zacílíme objekt) uživatele na formuláři do objektu TxtCelkem pomocí metody Focus() - viz Kód 3.

//pokud proběhne konverze textu na celé číslo potom...
if (int.TryParse(TxtCelkem.Text, out celkem))
{
    //celočíselné dělení
    hodin = celkem / 3600;
    //zbytek po celočíselném dělení
    celkem = celkem % 3600; 
    minut = celkem / 60;
    sekund = celkem % 60;
}
//jinak...
else
{
    TxtCelkem.Focus();
}

Kód 3: Metoda BtnPrevod_Click- testování konverze textu na celé číslo

Jako další musíme zajistit vypsání vypočtených hodnot na formulář do příslušných objektů. Zaměřme se nyní na výpis hodnoty do objektu TxtHodin typu TextBlock. Z minulého příkladu WPF aplikace HelloWPF2 víme, že abychom se dostali k objektu na formuláři, stačí nám využít klíčové slovo this. Pro přiřazení vypisovaného textu, využijeme vlastnosti Text. Záměrně mluvím o textu, ale my víme, že potřebujeme vypsat hodnotu. Potřebujeme tedy provést konverzi celého čísla na text. Využijeme implementované metody ToString(), kterou vyvoláme pomocí tečkové notace u celočíselné proměnné - viz Kód 4.

//převod vypočtené hodnoty na číslice a výpis v objektu na formuláři
this.TxtHodin.Text = hodin.ToString();

Kód 4: Metoda BtnPrevod_Click- převod vypočtených hodin převedených na číslice (text) a výpis do objektu TxtHodin 

Stejným způsobem budeme pokračovat u výpisu minut sekund na formulář - viz Kód 5.

this.TxtMinut.Text = minut.ToString();
this.TxtSekund.Text = sekund.ToString();

Kód 5: Metoda BtnPrevod_Click- převod vypočtených minut a sekund převedených na číslice (text) a výpis do příslušných objektů na formuláři

Jako poslední naplníme tělo metody BtnKonec_Click, pomocí níž zavřeme otevřený formulář (okno) - viz Kód 6.

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

Kód 6: Metoda BtnKonec_Click - zavření formuláře