Anonymní profil TonyT – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil TonyT – Programujte.comAnonymní profil TonyT – Programujte.com

 

Příspěvky odeslané z IP adresy 194.228.20.–

TonyT
.NET › C# - Try and Catch
30. 5. 2013   #177008

Zdravím. Mám tu takový menší problém. Tvořím jeden malý program ve Visual studiu pro výpočet průměru fresnelovy zóny, ale narazil jsem na jednu potíž. Chtěl jsem vytvořit ošetření proti písmenům v textboxu (Zadané hodnoty musí být pouze číselné) pomocí try and catch. Detekce písmen funguje v pořádku, protože zpráva o přítomnosti písmen se zobrazí, ale problém je v tom, že se program nezastaví, abych mohl hodnotu opravit, ale pokračuje dále, čímž aplikace spadne kvůli písmenům se kterými nemůže počítat. Kdysi v jednoduché kalkulačce jsem toto udělal bez problému díky prvku ve switchi, ale zde to udělat nemohu.

Zde je kód:

namespace Project_Fresnel
{
    public partial class Form1 : Form
    {
       
        const double svetlo = 300000;
        const double tis = 1000; // Deklarace konstantních proměnných pro převody jednotek
        const double des = 10;
        const double pol = 2;
        double n, m;
        public Form1()
        {
            InitializeComponent();
        }

        private void Osetreni_pismen()
        {
            try
            {
                n = double.Parse(txbvlndel.Text);
                m = double.Parse(txbvzdalen.Text);
            }
            catch
            {
                MessageBox.Show("Zadejte číslo, nikoli písmeno!"); }
          
        }

        private void Fresnelova_Zona()
        {
            //***********************************************************************************
            //Výpočet průměru fresnelovy zóny
            double frekvence = Convert.ToDouble(txbvlndel.Text); // Načtení frekvence z txbvlndel
            double helpfrek = svetlo / frekvence; // Výpočet vlnové délky v mm
            double vlndel = helpfrek / des; // Dělení vlnové délky 10 -> výsledek v cm
            double vzdalenost = Convert.ToDouble(txbvzdalen.Text); // Načtení vzdálenosti vysílačů z txbvzdalen
            double polovina = vzdalenost / pol; // Výpočet poloviny vzdálenosti vysílačů (Největší průměr)
            double hs = polovina * polovina;
            double zlom = hs / vzdalenost;
            double ns = vlndel * zlom;
            double pr = Math.Sqrt(ns);
            double prumer = pr / des;
            prumer = Math.Round(prumer*100)/100; // Zaokrouhlování na 2 desetinná místa
            txbprum.Text = prumer.ToString();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            Osetreni_pismen();
            Fresnelova_Zona();
        }
        }


        }

Děkuji za každou radu a odpověď.

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032021 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý