2015-11-02 84 views
-4

未设置值时,单击清除表单按钮不会导致异常,但在清除前插入数字值时会返回异常。其他带有字符串变量的文本框工作正常。清除已填充的数字文本框时输入异常

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

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

+2

什么是异常消息? – Partha

+5

这是一个令人难以置信的特定错误消息。 'txtIngred4Sugar.Text'中的值不能转换为double。检查抛出异常时的值。 –

+0

所以清除盒子使其为0.而0是不正确的输入我猜测。我最后试图能够接受像'20'这样的整数,并且能够将一些小数值(如20.5)用作良好的用户输入。 – DV8DUG

回答

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