首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >formatException未处理

formatException未处理
EN

Stack Overflow用户
提问于 2012-10-06 13:00:39
回答 3查看 547关注 0票数 2

我正在使用C# windows应用程序2010 express。这里我有3个textBoxes的总费用,金额支付,到期金额。总费用应从数据库中获取,支付金额应由用户输入,到期金额应由系统计算。这就是我的场景。我完成了第一部分,这意味着我填写了总费用一栏。但是第二部分和第三部分给了我一个异常,叫做"formatException是未处理的输入字符串格式不正确“。实际上,当我擦除我输入的支付金额值时,我得到了这个错误。这意味着在实际使用中,如果用户输入了错误的值,我将无法擦除该值。因此,请检查我的代码并更正它。

这是我的代码:

代码语言:javascript
复制
 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);
        }
    }
EN

回答 3

Stack Overflow用户

发布于 2012-10-06 13:10:31

我建议使用SimpleType.TryParse

代码语言:javascript
复制
 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

例如,

代码语言:javascript
复制
if(decimal.TryParse(textBox3.Text,out amount))
  //Valid
else
 //Invalid input
票数 2
EN

Stack Overflow用户

发布于 2012-10-06 13:02:49

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

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

票数 0
EN

Stack Overflow用户

发布于 2012-10-06 13:11:59

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

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

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

代码语言:javascript
复制
due = Int32.TryParse(textBox3.Text, out amount) - 
      Int32.TryParse(textBox4.Text, out fees);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12756879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档