Převod sekund
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