清除填充的数字文本框时输入中的异常

时间:2015-11-02 23:45:57

标签: c#

如果未设置值,则单击“清除表单”按钮不会导致异常,但在清除之前插入数值时会返回异常。其他带字符串变量的文本框工作正常。

  private void txtIngred4Sugar_TextChanged(object sender, EventArgs e)
    {
        float ing4S = (float)Convert.ToDouble(txtIngred4Sugar.Text);
    }

    void ClearAllText(Control con)
    {
        foreach (Control c in con.Controls)
        {
            if (c is TextBox)
                ((TextBox)c).Clear();
            else
                ClearAllText(c);
        }
    }

    private void clearForm1_Click(object sender, EventArgs e)
    {
        ClearAllText(this);

    }

例外: 类型' System.FormatException'的未处理异常发生在mscorlib.dll

其他信息:输入字符串的格式不正确。

1 个答案:

答案 0 :(得分:1)

如果没有更多细节,我会说你的问题是这一行

float ing4S = (float)Convert.ToDouble(txtIngred4Sugar.Text);

清除文本框时,txtIngred4Sugar_TextChanged事件处理程序会起作用,但在尝试转换之前,您不会检查txtIngred4Sugar.Text是否为数字。

如果参数不是数字,

Convert.ToDouble将抛出异常。

你应该在语句周围放置一个Try..Catch,并处理异常,或者更简洁的方法是使用Double.TryParse方法。有关TryParse的详细信息,请参阅此MSDN链接https://msdn.microsoft.com/en-us/library/994c0zb1%28v=vs.110%29.aspx