Закрывается форма если не отгадываю число на 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 {
}
}