使用TextChanged事件时防止FormatException
本文关键字:FormatException TextChanged 事件 使用 | 更新日期: 2023-09-27 18:11:34
我使用TextChanged Event来计算两个文本框并在第三个文本框中显示结果。然而,它已经起作用了,但是当两个文本框中的任何一个的值发生变化时,我得到了FormatException '输入字符串不是正确的格式'。下面是我的代码:
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();
}
我知道当改变值时,它取0的值,但是我怎么能防止呢
您可以使用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();
}
TextBox的Text属性的值不能是null
,但可以是String.Empty
,即一个空字符串。
解析空字符串或其他不能作为整数读取的字符串将导致抛出异常。
您可以使用TryParse
来尝试解析字符串,而不会出现异常:
int actualDefect;
bool result = int.TryParse(txtCustActualDefect.Text, out actualDefect);
如果result是true
,表示转换成功;如果false
失败了:
if (result)
{
// The conversion was succesful
}
else
{
// The conversion has failed
}