1

我正在使用 TextChanged 事件来计算两个文本框并将结果显示在第三个文本框中。但是,它已经有效,但是当两个文本框中的任何一个的值发生更改时,我得到 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();
}

我知道在更改值时它需要零值,但是我怎样才能防止任何我会感激的想法

4

2 回答 2

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();
            }
于 2013-05-01T11:15:40.337 回答
0

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
}
于 2013-05-01T11:25:28.470 回答