如果未设置值,则单击“清除表单”按钮不会导致异常,但在清除之前插入数值时会返回异常。其他带字符串变量的文本框工作正常。
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
其他信息:输入字符串的格式不正确。
答案 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。