Попробуйте перехватить сообщение об ошибке для formatException - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь поймать FormatException из текстового поля.Например - если пользователь вводит число или любой другой символ в поле текстового поля имени.Появится сообщение - что-то пошло не так.Я довольно новичок в C # и не понимаю концепции исключений.Ниже не работает.Что такое правильное исключение для неверного формата?

private void button1_Click(object sender, EventArgs e)
{
try
{
    string name = textBox1.Text;
    int age = int.Parse(textBox2.Text);

}
catch (FormatException )
{
    MessageBox.Show("Something went wrong");
}

Ответы [ 4 ]

0 голосов
/ 25 февраля 2019

вы можете обработать это в событии TextChanged следующим образом:

private void textBox1_TextChanged(object sender, EventArgs e)
        {
            int a;
            bool isNumeric = int.TryParse(textBox1.Text, out a);
            if (isNumeric)
            {
                MessageBox.Show("Something went wrong");
            }
        }
0 голосов
/ 25 февраля 2019

Если вам нужно проверить номера внутри текстового поля имени, то:

try {
        string name = textBox1.Text;
        Regex regex = new Regex("[0-9]");
        if (regex.IsMatch(name)) {
            throws new FormatException();
        }
        int age = int.Parse(textBox2.Text);
        MessageBox.Show("How are you today?");
    }
    catch (FormatException) {
       MessageBox.Show("Something went wrong");
    }

Вы также должны показать более конкретное сообщение для каждого из случаев.

ОБНОВЛЕНИЕ

Что вы действительно должны делать, это:

var regex = new Regex("[0-9]");
if (regex.IsMatch(textBox1.Text)) {
    MessageBox.Show("There was a number inside name textbox.","Error in name field!");
    return;
}
try {
    Convert.ToInt32(textBox2.Text);
} catch (Exception) {
    MessageBox.Show("The input in age field was not valid","Error in name field!");
    return;
}
0 голосов
/ 25 февраля 2019

Попробуйте показать сообщение.

    try
        {
            double mydoubleParam = 0;
            // Assuming textBox1.Text is Name test box
            if (double.TryParse(textBox1.Text, out mydoubleParam))
            {
                 new Exception(" Numeric value in name field");
            }

            int age = int.Parse(textBox2.Text);// Assuming Number text box

            MessageBox.Show("How are you today?");
        }

        catch (FormatException ex)
        {
            MessageBox.Show("Something went wrong");
        }
0 голосов
/ 25 февраля 2019
 catch (FormatException  ex)
    {
       MessageBox.Show("Something went wrong " + ex.ToString() );
    }

ИСПОЛЬЗУЙТЕ ex как переменную в Catch.

ОБНОВЛЕНИЕ (согласно комментарию)

 catch (FormatException  ex)
{
   MessageBox.Show("Something went wrong !");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...