我正在使用C# windows应用程序2010 express。这里我有3个textBoxes的总费用,金额支付,到期金额。总费用应从数据库中获取,支付金额应由用户输入,到期金额应由系统计算。这就是我的场景。我完成了第一部分,这意味着我填写了总费用一栏。但是第二部分和第三部分给了我一个异常,叫做"formatException是未处理的输入字符串格式不正确“。实际上,当我擦除我输入的支付金额值时,我得到了这个错误。这意味着在实际使用中,如果用户输入了错误的值,我将无法擦除该值。因此,请检查我的代码并更正它。
这是我的代码:
private void textBox4_TextChanged(object sender, EventArgs e)
{
textBox5.Text = "";
int due = 0;
due = Convert.ToInt32(textBox3.Text) - Convert.ToInt32(textBox4.Text);
if (textBox5.Text == null)
{
textBox5.Text = Convert.ToString(0);
}
else
{
textBox5.Text = Convert.ToString(due);
}
}发布于 2012-10-06 13:10:31
我建议使用SimpleType.TryParse
decimal amount,fees,due;
decimal.TryParse(textBox3.Text,out amount);
decimal.TryParse(textBox4.Text,out fees);
due = amount - fees;
textBox5.Text= due.ToString("N");如果字符串转换成功,则方法SimpleType.TryParse返回true;否则返回false。
例如,
if(decimal.TryParse(textBox3.Text,out amount))
//Valid
else
//Invalid input发布于 2012-10-06 13:02:49
将空字符串或非数字字符串传递给Convert.ToInt32时,会得到字符串应为数字的格式。我认为textbox3或textbox4上的文本要么为空字符串,要么不是数字字符串
使用Int32.TryParse代替http://msdn.microsoft.com/en-us/library/f02979c7.aspx
发布于 2012-10-06 13:11:59
您应该只允许textBox3和textBox4中的数值,因为Convert.ToInt32只要求有数值。
我建议您使用Int32.Parse(),,因为当用户输入无效输入时,它允许您对情况进行更细粒度的控制。
TryParse 将是最好的,因为它总是自己处理异常。
due = Int32.TryParse(textBox3.Text, out amount) -
Int32.TryParse(textBox4.Text, out fees);https://stackoverflow.com/questions/12756879
复制相似问题