我正在使用C#windows application 2010 express。 这里我有3个文本框,总费用,支付金额,到期金额。应从DB获得总费用,并且应由用户输入支付的金额,并且应由系统计算到期金额。这是我的情景。我完成了第一部分,这意味着我填写了总费用栏。 但第二和第三部分给我一个名为“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);
}
}
答案 0 :(得分:2)
我建议使用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");
如果 string 成功转换,方法SimpleType.TryParse
将返回true
;否则返回false
。
例如,
if(decimal.TryParse(textBox3.Text,out amount))
//Valid
else
//Invalid input
答案 1 :(得分:0)
当你将空数字或非数字字符串传递给Convert.ToInt32
时,你会得到格式异常。字符串应该是数字。我认为textbox3或textbox4上的文字要么是空字符串要么是数字
使用Int32.TryParse而不是http://msdn.microsoft.com/en-us/library/f02979c7.aspx
答案 2 :(得分:0)
您应该只允许textBox3
和textBox4
中的数值,因为Convert.ToInt32
只需要数值。
我建议你使用 Int32.Parse()
,因为它允许你在用户输入无效输入时对情况进行更精细的控制。
TryParse
将是最好的,因为它总是自己处理异常。
due = Int32.TryParse(textBox3.Text, out amount) -
Int32.TryParse(textBox4.Text, out fees);