Obsługa błędów

0

Witam :)
Napisałam aplikację formularzową, która pokazuje komunikat w przypadku pojawienia się błędu, po kliknięciu w przycisk Button click. Mam problem, ponieważ chciałabym, żeby błędy były sprawdzanie nie poprzez przycisk Button click. Proszę o wyjaśnienie w którym miejscu powinno być umieszczone takie sprawdzanie błędów i jak to ma wyglądać? Czy chodzi tutaj również o try... catch tylko poza buttonem?

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
try
{
double r, objetosc;
r = Convert.ToDouble(textBox1.Text);
if (r < 0)
{
MessageBox.Show("Błąd wprowadzania danych!");
listBox1.Items.Add(0.ToString());
}
else
{
objetosc = Math.Round((Math.PI Math.Pow(r,3) 4 / 3),2);
listBox1.Items.Add("Długość promienia " + r);
listBox1.Items.Add("Objetosc kuli wynosi " + objetosc);

        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

}

0

Mam problem, ponieważ chciałabym, żeby błędy były sprawdzanie nie poprzez przycisk Button click

Kiedy chcesz sprawdzać czy jest błąd? Gdy ktoś wpisuje do textboxa?

Generalnie przy czymś tak zwykłym jak r < 0 raczej nie używałbym try catch (oczywiście, jeżeli to r na pewno jest już doublem)

A do konwertowania możesz użyć

https://msdn.microsoft.com/pl-pl/library/994c0zb1(v=vs.110).aspx

0
WeiXiao napisał(a):

Kiedy chcesz sprawdzać czy jest błąd? Gdy ktoś wpisuje do textboxa?

Tak, na przykład wtedy.

0

Obczaj to

https://www.dotnetperls.com/textbox-wpf

Zdarzenie TextChanged

This is triggered whenever the Text property of the TextBox changes.

Ewentualnie, jeżeli chodzi o wprowadzanie liczb, to może daj na TextBox maskę (input mask) - definiuje jakie znaki można wprowadzać.

Chociaż z tego co widzę, to nie jest to tak proste jak w WinFormsach (tzn. w formsach jest gotowiec) :P

0

Najprościej byłoby jednak użyć kontrolki do wprowadzania liczb, która po prostu nie pozwala na wpisywanie tekstu oraz na ustawienie minimalnej oraz maksymalnej wartości, a nie bawić się w ręczne parsowanie i łapanie wyjątków.

0

@somekind: WPF jest upośledzony i takowej nie posiada vide trzeba skorzystać z osobnych bibliotek, np. MahApps.

1 użytkowników online, w tym zalogowanych: 0, gości: 1