2

我正在使用 C# windows application 2010 express。在这里,我有 3 个文本框,用于显示总费用、已付金额、应付金额。总费用应从数据库中获取,支付的金额应由用户输入,到期金额应由系统计算。这是我的场景。我完成了第一部分,这意味着我填写了总费用栏。但第 2 和第 3 部分给了我一个名为“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);
        }
    }
4

3 回答 3

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");

如果字符串转换成功,方法SimpleType.TryParse返回;否则返回。truefalse

例如,

if(decimal.TryParse(textBox3.Text,out amount))
  //Valid
else
 //Invalid input
于 2012-10-06T05:10:30.650 回答
0

当您将空字符串或非数字字符串传递给您时,Convert.ToInt32您将得到格式异常。字符串应该是数字。我认为 textbox3 或 textbox4 上的文本要么有空字符串,要么不是数字

改用 Int32.TryParse http://msdn.microsoft.com/en-us/library/f02979c7.aspx

于 2012-10-06T05:02:48.737 回答
0

你应该只允许数值textBox3textBox4因为Convert.ToInt32只需要数值。

我建议您使用Int32.Parse(),因为它可以让您更细粒度地控制用户输入无效输入时的情况。

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

due = Int32.TryParse(textBox3.Text, out amount) - 
      Int32.TryParse(textBox4.Text, out fees);
于 2012-10-06T05:11:58.767 回答