Закрывается форма если не отгадываю число на c#

Задача заключается в том, что я пишу число в textBox и если не отгадываю, то форма закрывается, а должно быть так, если я не отгадываю число, то я нажимаю на Button, очищается textBox и заново угадывать до тех пор, пока не угадаю. В чем ошибка?

namespace pzacy_1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        const int del = 10; // максимальное число, которое угадывается 
        Random rnd;
        int x, y, prize = 100; //i=x , k=y

        private void button1_Click(object sender, EventArgs e)
        {
            x = rnd.Next(del);
            y = 0;
            textBox1.Clear();
            textBox1.Focus();
            label3.Text = "";

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            rnd = new Random();
            x = rnd.Next(del);
            textBox1.Clear();
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            int n;
            //if (e.KeyChar != (char)13) return;
            n = Convert.ToInt32(textBox1.Text);
            if (n>x)
            {
                label3.Text = "Не угадали! Введите число меньше";
                prize = -10;
            }
            if (n < x)
            {
                label3.Text = "Не угадали! Введите число больше";
                prize = -10;
            }
            if (n == x)
            {
                label3.Text = "Правильно!" + prize;
            }
        } 
    }
}

Ответы (1 шт):

Автор решения: Aziz Umarov

Форма закрывается потому что вызывается исключение FormatException. А приложение его не отлавливает.

Добавьте try catch в Text changed. Либо конвертируйте чтоб не выбрасывало исключение. Подробнее можно посмотреть тут

Как то так

    private void textBox1_TextChanged(object sender, EventArgs e)
    {
       try {
        int n;
        //if (e.KeyChar != (char)13) return;
        n = Convert.ToInt32(textBox1.Text);
        if (n>x)
        {
            label3.Text = "Не угадали! Введите число меньше";
            prize = -10;
        }
        if (n < x)
        {
            label3.Text = "Не угадали! Введите число больше";
            prize = -10;
        }
        if (n == x)
        {
            label3.Text = "Правильно!" + prize;
        }
      } catch {
      }
    } 
→ Ссылка