formatException未处理

时间:2012-10-06 05:00:39

标签: c#

我正在使用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);
        }
    }

3 个答案:

答案 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)

您应该只允许textBox3textBox4中的数值,因为Convert.ToInt32只需要数值。

我建议你使用 Int32.Parse() ,因为它允许你在用户输入无效输入时对情况进行更精细的控制。

TryParse将是最好的,因为它总是自己处理异常。

due = Int32.TryParse(textBox3.Text, out amount) - 
      Int32.TryParse(textBox4.Text, out fees);