【问题标题】:Prevent FormatException when using TextChanged event使用 TextChanged 事件时防止 FormatException
【发布时间】:2013-05-01 11:11:26
【问题描述】:

我正在使用 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();
}

我知道在更改值时会采用零值,但我怎样才能防止这种情况发生 任何想法我都会感激的

【问题讨论】:

    标签: c# events textchanged


    【解决方案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();
                }
    

    【讨论】:

    • 约翰非常感谢你,我真的很感激
    【解决方案2】:

    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
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-24
      • 2012-06-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-07
      • 1970-01-01
      相关资源
      最近更新 更多