
Создаю приложение с тестами. Начал работать над тестом "устный счет" и столкнулся с проблемой ввода текста в TextBox для ответа.
Это даже странно, потому что сначала всё работало, а потом стало просто крашится при вводе любого символа! Даже когда шифт зажмёшь!
Суть такая:
Когда нажимаешь кнопку старта, выдается два числа и случайный знак.
В текстбокс вводишь ответ, нажимаешь Enter и переходишь к следующему рандомному примеру.
Пока это бесконечный цикл, но как закончу основную задачу, сделаю ограничение по количеству.
Проблема:
1. Не даёт заполнить текстбокс ЛЮБЫМИ символами. Так же, если нажать люблую клавишу, крашит и указывает на answer = int.Parse(tbAnswer.Text);
2. Подозрения на обработчик KeyDown. Скорее всего надо брать TextInput.
В коде я убрал максимум лишнего, чтобы показать Вам основное.
```
public partial class TestVCLess1 : Window
{
Random r = new Random();
public TestVCLess1()
{
InitializeComponent();
}
void selectTask()
{
char plus = '+';
tb1.Text = r.Next(0, 10).ToString(); // ТекстБлок с первым слагаемым
tb2.Text = r.Next(0, 10).ToString(); // ТекстБлок со вторым слогаемым
labelChar.Content = plus; // Метка со знаком
}
private void btnStart_Click(object sender, RoutedEventArgs e)
{
selectTask(); // установка рандомных чисел и знака
btnStart.Visibility = Visibility.Collapsed; //прячем кнопку после нажатия
}
private void tbAnswer_KeyDown(object sender, KeyEventArgs e)
{
int fSlog, sSlog, answer;
fSlog = int.Parse(tb1.Text); // Переводим в int для считывания
sSlog = int.Parse(tb2.Text); // Переводим в int для считывания
answer = int.Parse(tbAnswer.Text); // ВОТ ТУТ КОМПИЛЯТОР УКАЗЫВАЕТ НА ОШИБКУ
int summa = fSlog + sSlog; // Переменная результата
if (e.Key == Key.Enter)
if (answer == summa)
{
tbAnswer.Text = null; // чистим textbox
selectTask(); // Задаем новый пример
}
}
}
}
```
HELP =C



