Povrch a objem koule
2. PovrchObjemKouleWPF
2.4. C#
V souboru MainWindow.xaml.cs obsahující kód na pozadí (Code Behind) byla vygenerována základní struktura našeho programu v C# - viz Kód 1. Jako první si všimneme konstruktoru MainWindow této třídy (vnímejte ho jako speciální metodu pro vytvoření objektu - našeho formuláře, který obsahuje atributy třídy, tj. metody a datové složky), který má stejný název jako částečná třída MainWindow. Tělo konstruktoru obsahuje pouze metodu InitializeComponent(). Dále byly vygenerovány soukromé (private) metody bez návratu:
- TxtPolomer_GotFocus
- TxtPolomer_LostFocus
- BtnMetoda_Click
- BtnMetodaNavrat_Click
- BtnMetodaVyraz_Click
- BtnMetodaParametry_Click
- BtnMetoda2Navraty_Click
- BtnMetodaReference_Click
- BtnKonec_Click
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace PovrchObjemKouleWPF { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } ... } }
Kód 1: Základní kód částečné třídy MainWindow
Měli bychom také zmínit, že částečná třída využívá více odkazů na jmenné prostory, tj. více knihoven (uvozené klíčovým slovem using v začátku kódu), než je zapotřebí. Pro naše účely by postačili pouze dva odkazy - viz Kód 2. Odkazy však mazat nebudeme, abychom nedopatřením nesmazali nějaký potřebný odkaz.
using System; using System.Windows;
Kód 2: Odkazy na jmenné prostory .NET Framework
V analýze jsme uváděli, že v prvku pro zadání poloměru koule bude umístěn text "Zadejte poloměr". Tento text představuje konstantu (v průběhu programu se nemění). Abychom si zjednodušili přístup k této textové konstantě, nadefinujeme si vlastní statickou třídu (uvozenou klíčovým slovem static), která bude obsahovat tuto konstantu (nebo v případě potřeby i další). Tato třída bude deklarována ve jmenném prostoru PovrchObjemKouleWPF a bude v kódu umístěna nad již vygenerovaný konstruktor. Statická třída představuje třídu, která je převážně využívána pro uchování obecně použitelných atributů, které nejsou závislé na instanci třídy (vygenerovaného objektu třídy). Více se o statických třídách dozvíte později. Ve statické třídě si deklarujeme veřejně přístupnou (public) textovou konstantu (const), tj. datového typu string, kterou inicializujeme počáteční hodnotou "Zadejte poloměr" - viz Kód 3. Abychom zvýšili srozumitelnost našeho programu, můžeme ke třídě doplnit její popis pomocí třech lomítek (popisek bude zobrazovat Intellisense ve VS). Pokud nad statickou třídu umístíme tři zpětná lomítka, VS vám vygeneruje prázdné tělo popisku (komentáře), do kterého umístíme informace o této statické třídě - viz Kód 3.
/// <summary> /// Statická třída obsahující deklarace konstant /// </summary>
Kód 3: Popisek statické třídy (komentář)
V následujícím kódu vidíme popisek třídy, včetně samotné statické třídy obsahující datovou složku, jenž představuje konstantní textový řetězec s názvem ZadPolomer, ve kterém je uložena hodnota "Zadejte poloměr" - viz Kód 4.
/// <summary> /// Statická třída obsahující deklarace konstant /// </summary> static class Constants { //Deklarace a inicializace datové složky třídy public const string ZadPolomer = "Zadejte poloměr"; }
Kód 4: Deklarace statické třídy Constants s veřejně přístupnou datovou konstantní textovou složkou
Vzhledem k tomu, že již máme definovanou statickou třídu s konstantou, můžeme provést při spuštění aplikace vypsání textu "Zadejte poloměr" do prvku s poloměrem koule pomocí statické třídy - viz Kód 5. K datové složce statické třídy (v našem případě textové konstantě) přistoupíme pomocí tečkové notace.
public MainWindow() { InitializeComponent(); //Při spuštění aplikace je vypsán text v prvku s poloměrem koule this.TxtPolomer.Text = Constants.ZadPolomer; }
Kód 5: Deklarace konstruktoru třídy
První metodou, jejíž tělo musíme vyplnit, je zacílení objektu (přepnutí se na objekt) pro zadání poloměru koule. Pokud objektu (prvku na formuláři) pro zadání poloměru obsahuje počáteční text "Zadejte poloměr", bude tento text vymazán. Pro definici podmínky využijeme klíčové slovo if za nějž do závorky umístíme podmínku. Pokud tato podmínka bude splněna, přiřadíme prázdný text (string.Empty) vlastnosti Text objektu TxtPolomer .
//Vymazání počátečního textu v objektu pro poloměr private void TxtPolomer_GotFocus(object sender, RoutedEventArgs e) { //Pokud je umístěn počáteční text "Zadejte poloměr" v objektu pro poloměr if (this.TxtPolomer.Text == Constants.ZadPolomer) { //Vymazání textu v objektu pro poloměr this.TxtPolomer.Text = string.Empty; } }
Kód 6: Deklarace metody pro zacílení objektu poloměru koule (TxtPolomer_GotFocus)
Pokud bude opuštěn objekt poloměru koule a nebude obsahovat žádný údaj, bude objekt vyplněn textem "Zadejte poloměr". Uživatel také mohl již vypočítat povrch a objem koule dříve pomocí poloměru, který nyní smazal. Proto je nutné vymazat vypočtený povrch a objem koule, který se vztahuje k předchozímu poloměru koule - viz Kód 7.
//Vyplnění počátečního textu v objektu pro poloměr při opuštění objektu private void TxtPolomer_LostFocus(object sender, RoutedEventArgs e) { //Pokud je objekt poloměru prázdný (neobsahuje text) if (this.TxtPolomer.Text == string.Empty) { //Vyplnění poloměru textem "Zadejte poloměr" this.TxtPolomer.Text = Constants.ZadPolomer; //Vymazání předchozího povrchu koule this.TxtPovrch.Text = ""; //Vymazání předchozího objemu koule this.TxtObjem.Text = ""; } }
Kód 7: Deklarace metody pro opuštění objektu poloměru koule (TxtPolomer_LostFocus)
Pojďme se podívat na první výpočet povrchu a objemu koule pomocí metody bez návratu (void) pomocí stisku tlačítka BtnMetoda. Vypočtené hodnoty povrchu a objemu koule jsou uloženy v lokálních proměnných s a v, které budeme využívat pouze uvnitř metody. Hodnoty z těchto proměnných vypíšeme v objektech na formuláři po provedení konverze čísel na text (přistupujeme k vlastnosti Text u prvku na formuláři, proto musíme použít text). Popis jednotlivých kroků metody bude vysvětlen pomocí komentářů - viz Kód 8.
//Metoda bez návratu pro výpočet povrchu a objemu koule bez volání metod private void BtnMetoda_Click(object sender, RoutedEventArgs e) { // Deklarace lokálních proměnných: 's' ... plocha koule; 'v' ... objem koule double s, v; //Pokud lze provést konverzi textu (stringu) na reálné číslo pro hodnotu poloměru, pak... if (double.TryParse(this.TxtPolomer.Text, out double r)) { //Výpočet povrchu pomocí konstanty PI (třída Math) s = 4 * Math.PI * r * r; //Výpočet objemu - přetypování na datový typ double; Pow - metoda pro umocnění v = ((double)4 / 3) * Math.PI * Math.Pow(r, 3); //Konverze reálného čísla (uloženého v lokální proměnné) na text(string) this.TxtPovrch.Text = s.ToString(); //Konverze reálného čísla na text this.TxtObjem.Text = v.ToString(); } //jinak... else { /* Zobrazení okna se zprávou (1. parametr - text v okně; 2. parametr - titulek okna; 3. parametr - s jedním * tlačítkem pro zavírání; 4. parametr - s ikonou varování) - minimálně 1 parametr povinný */ MessageBox.Show("Zadejte číslo ve správném formátu!", "Chyba", MessageBoxButton.OK, MessageBoxImage.Warning); //Příkaz pro špatné zadání poloměru - zacílení na objekt poloměru koule this.TxtPolomer.Focus(); } }
Kód 8: Deklarace metody pro výpočet povrchu a objemu koule bez volání metod (BtnMetoda_Click)
Dalším tlačítkem, pro něhož musíme vytvořit tělo metody pro obsluhu události Click, je tlačítko BtnMetodaNavrat. Tato metoda obsluhy bez návratu, bude v sobě volat (spouštět) dvě metody s návratem - viz Kód 11.
Do C# kódu lze pro rychlejší orientaci a členění vložit značky regionů - viz Kód 9. Pokud vložíte metodu mezi počáteční (#region Výpočty) a koncovou značku regionu (#endregion), lze pak pomocí ikony - (nebo + po sbalení), umístěné vlevo od regionu, zdrojový kód skrýt. My budeme seskupovat metody do regionu Výpočty, který bude obsahovat metody, které budou volány v rámci metod pro obsluhu události Click u jednotlivých tlačítek.
Za účelem zpřehlednění struktury kódu vložte další region s názvem Události, který bude zahrnovat metody obsluhy události Click u jednotlivých tlačítek a událostí GotFocus a LostFocus u prvku TxtPolomer.
#region Výpočty #endregion
Kód 9: Deklarace regionu s názvem Výpočty
První volaná soukromá (private - je přístupná pouze v rámci příslušné třídy) metoda PovrchKouleMetodaSNavratem bude navracet vypočtený povrch koule z předané hodnoty poloměru - parametru (argumentu). Tento parametr uvedený v závorce je předaný hodnotou, tzn., že hodnota bude nakopírována do formálního parametru uvedeného ve volané metodě. Hodnota tohoto předaného parametru je načtena z prvku na formuláři (je tedy znovu zapotřebí provést konverzi textu na reálné číslo pomocí metody TryParse) v metodě BtnMetodaNavrat_Click - viz Kód 11. Metodu jsme obohatili komentářem, který se zobrazí při volání této metody v jiné metodě. Komentář by měl pouze popisovat podstatu metody, předaných parametrů a výstupu - viz Kód 10. My jsme jej doplnili z didaktického důvodu o další informace.
/// <summary> /// Metoda s návratem pro výpočet povrchu koule /// </summary> /// <param name="r"> poloměr koule - vstupní parametr metody (předán hodnotou) </param> /// <returns> výstup metody je povrch koule </returns> private double PovrchKouleMetodaSNavratem(double r) { //Návrat vypočteného povrchu return 4 * Math.PI * Math.Pow(r, 2); }
Kód 10: Deklarace metody s návratem pro výpočet povrchu koule (PovrchKouleMetodaSNavratem)
Druhá volaná metoda ObjemKouleMetodaSNavratem navrátí objem koule na základě předaného poloměru - viz Kód 11. Všimněte si, že abychom obdrželi desetinné číslo podělením 4 a 3, musíme definovat definovat tzv. literál, tj. písmeno o který datový typ se jedná, jinak bychom obdrželi hodnotu celočíselného podílu. V našem případě půjde o datový typ double, čili d.
/// <summary> /// Výpočet objemu koule /// </summary> /// <param name="r"> poloměr koule </param> /// <returns> objem koule </returns> private double ObjemKouleMetodaSNavratem(double r) { //Návrat vypočteného objemu return (4d / 3) * Math.PI * Math.Pow(r, 3); }
Kód 11: Deklarace metody s návratem pro výpočet objemu koule (ObjemKouleMetodaSNavratem)
V následujícím kódu metody bez návratu pro obsluhu pro stisknu tlačítka BtnMetodaNavrat vidíme volání obou deklarovaných metod s návratem - viz Kód 12. Reálná hodnota návratu je po konverzi (metoda ToString) vypsána v příslušném prvku na formuláři.
//Metoda bez návratu pro výpočet povrchu a objemu koule s voláním metod s návratem private void BtnMetodaNavrat_Click(object sender, RoutedEventArgs e) { //Pokud lze provést konverzi textu(stringu) na reálné číslo pro hodnotu poloměru, pak... if (double.TryParse(this.TxtPolomer.Text, out double r)) { /* Zavolání metody s návratem pro výpočet povrchu koule, která má 1 vstup(r) a 1 výstup - konverze * výstupního reálného čísla na text(string) */ this.TxtPovrch.Text = PovrchKouleMetodaSNavratem(r).ToString(); /* Zavolání metody s návratem pro výpočet objemu koule, která má 1 vstup(r) a 1 výstup - konverze * výstupního reálného čísla na text(string) */ this.TxtObjem.Text = ObjemKouleMetodaSNavratem(r).ToString(); } //jinak... else { //Okno se zprávou MessageBox.Show("Zadejte číslo ve správném formátu!", "Chyba", MessageBoxButton.OK, MessageBoxImage.Warning); //Zacílení na objekt poloměru koule this.TxtPolomer.Focus(); } }
Kód 12: Deklarace metody pro výpočet povrchu a objemu koule s voláním metod s návratem (BtnMetodaNavrat_Click)
Pro úsporu kódu při psaní metody je možné použít metodu orientovanou na výraz. My takový přístup použijeme jak pro výpočet povrchu - viz Kód 13, tak i pro výpočet objemu koule - viz Kód 14.
/// <summary> /// Metoda orientovaná na výraz pro výpočet povrchu koule /// </summary> /// <param name="r"> poloměr koule </param> /// <returns> povrch koule </returns> private double PovrchKouleMetodaVyraz(double r) => 4 * Math.PI * r * r;
Kód 13: Deklarace metody orientované na výraz pro výpočet povrchu koule (PovrchKouleMetodaVyraz)
/// <summary> /// Metoda orientovaná na výraz pro výpočet objemu koule /// </summary> /// <param name="r"> poloměr koule </param> /// <returns> objem koule </returns> private double ObjemKouleMetodaVyraz(double r) => (4d / 3) * Math.PI * Math.Pow(r, 3);
Kód 14: Deklarace metody orientované na výraz pro výpočet objemu koule (ObjemKouleMetodaVyraz)
Obě předchozí deklarované metody budou volány v metodě pro obsluhu události Click u tlačítka BtnMetodaVyraz - viz Kód 15. Všimněte si určení formátu, ve kterém mají být číslice vypisovány do prvku na formuláři pro případ povrchu a objemu koule. Dříve jsme používali metodu ToString vyvolanou pomocí tečkové notace u proměnné. Nyní však použijeme metodu Format vyvolanou též pomocí tečkové notace, nyní však přímo ze třídy datového typu string (samotný datový typ představuje také třídu). U této metody určíme numerický formát "{0:N2}", jenž představuje numerický formát zobrazení číslic na dvě pozice za desetinnou čárkou a s oddělovačem tisíců. Oddělovač je závislý na nastavení, jaké používá Váš systém (třída CultureInfo), např. v českém prostředí používáme pro oddělení tisíců mezeru, v americkém zase čárku.
//Metoda bez návratu pro výpočet povrchu a objemu koule s voláním metod orientovaných na výraz private void BtnMetodaVyraz_Click(object sender, RoutedEventArgs e) { //Pokud lze provést konverzi textu na reálné číslo pro hodnotu poloměru, pak... if (double.TryParse(this.TxtPolomer.Text, out double r)) { /* Volání metody orientované na výraz pro výpočet povrchu koule, která má 1 vstup(r) a * 1 výstup - konverze výstupního reálného čísla na text(string) v požadovaném fomátu */ this.TxtPovrch.Text = string.Format("{0:N2}", PovrchKouleMetodaVyraz(r)); /* Volání metody orientované na výraz pro výpočet objemu koule, která má 1 vstup(r) a * 1 výstup - konverze výstupního reálného čísla na text(string) v požadovaném fomátu */ this.TxtObjem.Text = string.Format("{0:N2}", ObjemKouleMetodaVyraz(r)); } //jinak... else { //Okno se zprávou MessageBox.Show("Zadejte číslo ve správném formátu!", "Chyba", MessageBoxButton.OK, MessageBoxImage.Warning); //Zacílení na objekt poloměru koule this.TxtPolomer.Focus(); } }
Kód 15: Deklarace metody pro výpočet povrchu a objemu koule s voláním metod orientovaných na výraz (BtnMetodaVyraz_Click)
Dalším možným přístupem pro výpočet povrchu a objemu koule na základě vstupního parametru r je použití metody s výstupnými parametry, kterými jsou vypočtený povrch a objem koule (u výstupního parametru je použito klíčové slovo out) - viz Kód 16. Nezapomeňte na to, že oba parametry musí být v metodě naplněny!
/// <summary> /// Metody s výstupními parametry pro výpočet povrchu a objemu koule /// </summary> /// <param name="r"> poloměr koule - vstupní parametr </param> /// <param name="s"> povrch koule - první výstupní parametr </param> /// <param name="v"> objem koule - druhý výstupní parametr </param> private void PovrchObjemKouleVystupniParametry(double r, out double s, out double v) { s = 4 * Math.PI * r * r; v = ((double)4 / 3) * Math.PI * Math.Pow(r, 3); }
Kód 16: Deklarace metody s výstupními parametry pro výpočet povrchu a objemu koule (PovrchObjemKouleVystupniParametry)
Volání této metody se dvěma výstupy provedeme v metodě pro obsluhu událost Click u tlačítka BtnMetodaParametry. U volané metody též musíme použít klíčové slovo out u výstupních parametrů - viz Kód 17. Záleží též na pořadí předávaných a výstupních parametrů, tzn. abychom neprohodili pořadí parametrů s a v.
//Metoda bez návratu pro výpočet povrchu a objemu koule s voláním metod s výstupními parametry private void BtnMetodaParametry_Click(object sender, RoutedEventArgs e) { //Pokud lze provést konverzi textu na reálné číslo pro hodnotu poloměru, pak... if (double.TryParse(this.TxtPolomer.Text, out double r)) { //Volání metody s výstupními parametry, která má 1 vstupní parametr (r) a 2 výstupní parametry (s,v) PovrchObjemKouleVystupniParametry(r, out double s, out double v); //Zobrazení vypočteného povrchu (konverze reálného čísla na text(string)) this.TxtPovrch.Text = s.ToString(); //Zobrazení vypočteného objemu this.TxtObjem.Text = v.ToString(); } //jinak... else { //Okno se zprávou MessageBox.Show("Zadejte číslo ve správném formátu!", "Chyba", MessageBoxButton.OK, MessageBoxImage.Warning); //Zacílení na objekt poloměru koule this.TxtPolomer.Focus(); }
Kód 17: Deklarace metody pro výpočet povrchu a objemu koule s voláním metody s výstupními parametry (BtnMetodaParametry_Click)
Předposlední typem použité metody je metoda navracející 2 výstupy. V našem případě oba datového typu double. Návrat je uskutečněn pomocí příkazu return s tím rozdílem, že výstupy jsou uvedeny v závorce a odděleny čárkou - viz Kód 18.
/// <summary> /// Metoda navracející 2 výstupy - povrch a objem koule /// </summary> /// <param name="r"> poloměr koule </param> /// <returns> povrch, objem - výstupy metody jsou typu double </returns> private (double, double) PovrchObjemKouleMetodaDvaNavraty(double r) { double s, v; s = 4 * Math.PI * r * r; v = (4d / 3) * Math.PI * Math.Pow(r, 3); return (s, v); }
Kód 18: Deklarace metody navracející 2 výstupy - povrch a objem koule (PovrchObjemKouleMetodaDvaNavraty)
V následujícím zdrojovém kódu metody pro obsluhu události Click tlačítka BtnMetoda2Navraty vidíme volání předchozí metody pro návrat dvou výstupů, které jsou uloženy do lokálních proměnných s a v. Pozor na pořadí těchto proměnných, abyste je neprohodili. Hodnoty v lokálních proměnných jsou vypsány v požadovaném formátu do příslušných prvků na formuláři.
//Metoda bez návratu pro výpočet povrchu a objemu koule s voláním metody navracející dva výstupy private void BtnMetoda2Navraty_Click(object sender, RoutedEventArgs e) { // Deklarace lokálních proměnných: 's' ... plocha koule; 'v' ... objem koule double s, v; //Pokud lze provést konverzi textu na reálné číslo pro hodnotu poloměru, pak... if (double.TryParse(this.TxtPolomer.Text, out double r)) { //Volání metody navracející 2 výstupy (povrch, objem koule) (s, v) = PovrchObjemKouleMetodaDvaNavraty(r); //Zobrazení vypočteného povrchu uloženého v lokální proměnné 's' (konverze reálného čísla na text(string)) this.TxtPovrch.Text = string.Format("{0:N2}", s); //Zobrazení vypočteného objemu uloženého v lokální proměnné 'v' (konverze reálného čísla na text(string)) this.TxtObjem.Text = string.Format("{0:N2}", v); } //jinak... else { //Okno se zprávou MessageBox.Show("Zadejte číslo ve správném formátu!", "Chyba", MessageBoxButton.OK, MessageBoxImage.Warning); //Zacílení na objekt poloměru koule this.TxtPolomer.Focus(); } }
Kód 19: Deklarace metody pro výpočet povrchu a objemu koule s voláním metody navracející 2 výstupy (BtnMetoda2Navraty_Click)
Posledním přístupem, který si ukážeme, je předání parametru odkazem (referencí - klíčové slovo ref). Při uvedení klíčového slova ref říkáme, že má být vytvořena reference (propojení) tohoto parametru s parametrem uvedeným v metodě PovrchObjemKoulePredaniOdkazem, která tuto metodu volala (tj. metoda pro obsluhu události stisknutí tlačítka BntReference_Click).
/// <summary> /// Metoda bez návratu - předání parametrů odkazem (povrch a objem koule) /// </summary> /// <param name="r"> poloměr koule - parametr předaný hodnotou </param> /// <param name="s"> povrch koule - parametr předaný odkazem </param> /// <param name="v"> povrch koule - parametr předaný odkazem </param> private void PovrchObjemKoulePredaniOdkazem(double r, ref double s, ref double v) { //Výpočet povrchu koule s = 4 * Math.PI * r * r; //Výpočet objemu koule v = (4d / 3) * Math.PI * Math.Pow(r, 3); }
Kód 20: Deklarace metody s předáním parametrů (povrchu a objemu koule) odkazem (PovrchObjemKoulePredaniOdkazem)
Volání předchozí deklarované metody provedeme z metody pro obsluhu stisknutí tlačítka BtnMetodaReference - viz Kód 21. Před předáním parametru odkazem musí být daný parametr inicializován, tzn. musí být naplněn hodnotou! My jsme ve zdrojovém kódu oběma parametrům s a v přiřadili hodnotu 0 (inicializaci jsme mohli provést přímo v deklaraci lokální proměnné. Lokální proměnná zde zároveň představuje parametr). Všimněte si, že první parametr r je předán hodnotou, tzn. není uvedeno klíčové slovo ref. Hodnota z lokální proměnné r je nakopírována do parametru r ve volané metodě PovrchObjemKoulePredaniOdkazem (ve volané metodě můžete použít jiné pojmenování parametru např. rr, se kterým ve volané metodě budete pracovat. Záleží na pořadí předaného parametru). Další parametry s a v (říká se jim skutečné) deklarované v metodě BtnMetodaReference_Click jsou předány odkazem, tzn. je vytvořena reference (propojení) na formální parametry uvedené ve volané metodě PovrchObjemKoulePredaniOdkazem. Znamená to, že to co provedeme s formální parametrem ve volané metodě, se nám po ukončení volané metody odrazí na skutečném parametru.
//Metoda bez návratu pro výpočet povrchu a objemu koule s voláním metody, které jsou předány parametry odkazem private void BtnMetodaReference_Click(object sender, RoutedEventArgs e) { // Deklarace lokálních proměnných: 's' ... plocha koule; 'v' ... objem koule double s, v; //Pokud lze provést konverzi textu na reálné číslo pro hodnotu poloměru, pak... if (double.TryParse(this.TxtPolomer.Text, out double r)) { //Inicializace proměnných, tj. počáteční přiřazení hodnoty s = v = 0; //Volání metody bez návratu - předání parametru 'r' hodnotou a předání parametrů 's' a 'v' odkazem PovrchObjemKoulePredaniOdkazem(r, ref s, ref v); //Zobrazení vypočteného povrchu uloženého v lokální proměnné 's' (konverze reálného čísla na text(string)) this.TxtPovrch.Text = string.Format("{0:N2}", s); //Zobrazení vypočteného objemu uloženého v lokální proměnné 'v' (konverze reálného čísla na text(string)) this.TxtObjem.Text = string.Format("{0:N2}", v); } //jinak... else { //Okno se zprávou MessageBox.Show("Zadejte číslo ve správném formátu!", "Chyba", MessageBoxButton.OK, MessageBoxImage.Warning); //Zacílení na objekt poloměru koule this.TxtPolomer.Focus(); } }
Kód 21: Deklarace metody pro výpočet povrchu a objemu koule s předaním parametrů odkazem (BtnMetodaReference_Click)
Finální metodou, kterou musíme upravit je metoda pro obsluhu události Click tlačítka Konec. Tato metoda nám zavře formulář - viz Kód 22.
//Metoda bez návratu pro zavření formuláře private void BtnKonec_Click(object sender, RoutedEventArgs e) { //zavření formuláře this.Close(); }
Kód 22: Deklarace metody bez návratu pro zavření formuláře (BtnKonec_Click)