Member 12457690 Ответов: 2

Умножение чисел между текстовыми полями


Когда я удаляю номер из textBox5, код выдает ошибку;
int R = преобразовать.ToInt32(textBox4.Text);
//int I = преобразовать.ToInt32(textBox5.Text);

//int E = R * I;

//textBox6.Text = E. ToString();

Второй способ, который я попробовал, приведен ниже: оба кода ошибаются, когда я удаляю номер и пытаюсь ввести новый номер.

Р инт = инт.Синтаксический анализ(textBox4.Текст);
int I = int.Parse(textBox5.Text);

int E = R * I;

textBox6.Text = E. ToString();

Что я уже пробовал:

Два способа в описании

Richard MacCutchan

Что за ошибка?Пожалуйста, дайте надлежащую информацию о проблеме.

2 Ответов

Рейтинг:
17

F-ES Sitecore

Преобразовать.ToInt32 и int.Parse подходят только в том случае, если вы знаете, что текст может быть преобразован в int, поскольку вы работаете с пользовательским вводом, вы не знаете, является ли он допустимым, поэтому используйте int.Вместо этого попробуй спарситься.

int R = 0;
int I = 0;

if (!int.TryParse(textBox4.Text.Trim(), out R))
{
    // if the code gets here the conversion to int failed
    // you can show a message to the user, or give R a default value
    // do whatever your code requires

    R = 0;
}

if (!int.TryParse(textBox5.Text.Trim(), out I))
{
    // if the code gets here the conversion to int failed
    // you can show a message to the user, or give I a default value
    // do whatever your code requires

    I = 0;
}

int E = R * I;


Рейтинг:
0

phil.o

Когда вы удаляете число из текстового поля, то в текстовое поле передается пустая строка. ToInt32 метод, который вызывает ошибку, поскольку он не может преобразовать пустую строку в целочисленное значение.
Int32.Parse метод делает то же самое.
У вас есть несколько вариантов:
- разрешить ввод пустых строк в текстовое поле и интерпретировать пустые строки как нулевое значение по умолчанию.
- справьтесь с этим Validating событие текстового поля и не позволяйте потерять фокус до тех пор, пока там не появится целое значение (не очень удобное для пользователя).
- пусть поставщик ошибок обнаружит пропущенное значение.

Есть одно правило, которое никогда слепо не доверяет входным данным пользователя, всегда предполагая, что будут ошибки ввода, поэтому код обрабатывает все тестовые случаи. То TryParse метод может быть хорошим выбором для проверки входных значений. Лучший вариант, чем этот Convert класс, который, во всяком случае, не очень хороший инструмент для выполнения поставленной задачи.

Надеюсь, это поможет.