Решил написать калькулятор на 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, если преобразование не произошло.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей