Решил написать калькулятор на C#, нужно форматировать строку в TextBox в int, при этом обработать исключение при вводе алфавита.Но при этом всё равно выводится ошибка, извиняюсь если глупый вопрос, гуглил, ответа не нашел
private void textBox1_TextChanged(object sender, EventArgs e)
{
int NamberA = int.Parse (textBox1.Text);
try
{
NamberA = Convert.ToInt32(textBox1.Text);
}
catch(FormatException)
{
MessageBox.Show("Вы ввели буквы, будьте впредь аккуратны");
}
}
У вас ошибка в том, что у вас метод int.Parse
находится вне блока try/catch
. Чтобы правильно обработать исключение, нужно метод, выбрасывающий исключение, поместить в try
-часть. У вас почему-то два раза осуществляется преобразование строки в число двумя разными способами. Поэтому один из них нужно убрать. Пусть останется int.Parse
:
private void textBox1_TextChanged(object sender, EventArgs e)
{
int NamberA;
try
{
NamberA = int.Parse(textBox1.Text);
}
catch(FormatException)
{
MessageBox.Show("Вы ввели буквы, будьте впредь аккуратны");
}
}
P.S. Вообще, для калькулятора я бы поступил немного по-другому. Вместо события TextChanged
я бы обрабатывал событие KeyPress
. И сделал бы такой обработчик для textBox
:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = !char.IsDigit(e.KeyChar);
}
В этом случае в textBox вообще нельзя ввести ничего, кроме цифр.
В вашем случае, также можно воспользоваться методом TryParse()
private void textBox1_TextChanged(object sender, EventArgs e)
{
int NumberA;
if(!int.TryParse(textBox1.Text, out NumberA))
{
MessageBox.Show("Вы ввели буквы, будьте впредь аккуратны");
}
}
TryParse возвращает true, если получилось преобразовать строку в число и кладёт в NumberA это число и возвращает false, если преобразование не произошло.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Персонаж перестает двигаться после непродолжительного бездействия (AFK)Всегда через какое-то время (около 3 минут) бездействия в игре, т
Имеется задача где необходимо во время выполнения создавать новую таблицу по запросу юзераТаблицу заранее предсказать нельзя, т
следующая строчка кода возвращает путь, который содержит "кириллицу"