2013-05-01 2 views
1

Я использую событие TextChanged, чтобы вычислить два текстовых поля и показать результат в третьем текстовом поле. Однако он уже работает, но когда значение любого из двух текстовых полей изменяется, я получил FormatException. Строка ввода не была в правильном формате. Вот мой код:Prevent FormatException при использовании события TextChanged

private void txtCustActualDefect_TextChanged(object sender, EventArgs e) 
{ 
    int TargetDefect = int.Parse(txtCustTargetDfect.Text); 
    int ActualDefect = int.Parse(txtCustActualDefect.Text); 

    decimal Per = ((decimal)ActualDefect/(decimal)TargetDefect) * 100; 
    txtCustPercentageDefect.Text = Per.ToString(); 
} 

Я знаю, что при изменении значения она принимает значение ноль, но как я могу предотвратить это любые мысли, я бы оценил

ответ

1

Вы можете использовать int.TryParse. Который возвратит true, если бросок пройдет.

    int TargetDefect; 
       int.TryParse(txtCustTargetDfect.Text, out TargetDefect); 

       int ActualDefect; 
       int.TryParse(txtCustActualDefect.Text, out ActualDefect); 

Более безопасная реализация может быть:

  int TargetDefect; 
      int ActualDefect; 

      if(int.TryParse(txtCustTargetDfect.Text, out TargetDefect) && int.TryParse(txtCustActualDefect.Text, out ActualDefect)) 
      { 
       decimal Per = ((decimal) ActualDefect/(decimal) TargetDefect)*100; 
       txtCustPercentageDefect.Text = Per.ToString(); 
      } 
+0

John Большое вам спасибо, что я очень ценю, что – user2102572

0

Значение свойства текста текстового поля никогда не может быть null, но это может быть String.Empty, то есть пустая строка.

Анализ пустой строки или любой другой строки, которая не может считаться целым числом, приведет к возникновению исключения.

Вы можете использовать TryParse, чтобы попытаться разобрать строку без шанса исключения:

int actualDefect; 
bool result = int.TryParse(txtCustActualDefect.Text, out actualDefect); 

Если результат true, преобразование удалось; если false не удалось:

if (result) 
{ 
    // The conversion was succesful 
} 
else 
{ 
    // The conversion has failed 
} 
Смежные вопросы