我正在使用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 :(得分: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();
}
答案 1 :(得分:0)
TextBox的Text属性的值永远不能是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
}