输入字符串的格式不正确:未处理的异常 [英] Input string was not in the correct format : Unhandled exception

查看:110
本文介绍了输入字符串的格式不正确:未处理的异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在1个文本框中计算五个文本框的总和....但是当我保持空时,五个文本框中的一个文本框会出现错误输入字符串格式不正确,下面是我的代码



  if (textBox6.Text.Length ==  0 

// textBox12.Text = (Convert.ToInt32(textBox5.Text) - Convert.ToInt32(textBox11.Text))。ToString();
{
textBox11.Text =(Convert.ToInt32(textBox7.Text) + Convert.ToInt32(textBox8.Text)+ Convert.ToInt32(textBox9.Text)+ Convert.ToInt32(textBox10.Text))。ToString();
textBox12.Text =(Convert.ToInt32(textBox5.Text) - Convert.ToInt32(textBox11.Text))。ToString();
}
else if (textBox7.Text.Length == 0
{
// textBox11。 Text =(Convert.ToInt32(textBox6.Text)+ Convert.ToInt32(textBox7.Text)+ Convert.ToInt32(textBox8.Text)+ Convert.ToInt32(textBox9.Text)+ Convert.ToInt32(textBox10.Text))。ToString ();
textBox11.Text =(Convert.ToInt32(textBox6.Text)+ Convert.ToInt32(textBox8.Text)+ Convert.ToInt32(textBox9.Text)+ Convert.ToInt32(textBox10.Text ))的ToString();
textBox12.Text =(Convert.ToInt32(textBox5.Text) - Convert.ToInt32(textBox11.Text))。ToString();
}
else if (textBox8.Text.Length == 0
{
// textBox11。 Text =(Convert.ToInt32(textBox6.Text)+ Convert.ToInt32(textBox7.Text)+ Convert.ToInt32(textBox8.Text)+ Convert.ToInt32(textBox9.Text)+ Convert.ToInt32(textBox10.Text))。ToString ();
textBox11.Text =(Convert.ToInt32(textBox6.Text)+ Convert.ToInt32(textBox7.Text)+ Convert.ToInt32(textBox9.Text)+ Convert.ToInt32(textBox10.Text ))的ToString();
textBox12.Text =(Convert.ToInt32(textBox5.Text) - Convert.ToInt32(textBox11.Text))。ToString();
}
else if (textBox9.Text.Length == 0
{
// textBox11。 Text =(Convert.ToInt32(textBox6.Text)+ Convert.ToInt32(textBox7.Text)+ Convert.ToInt32(textBox8.Text)+ Convert.ToInt32(textBox9.Text)+ Convert.ToInt32(textBox10.Text))。ToString ();
textBox11.Text =(Convert.ToInt32(textBox6.Text)+ Convert.ToInt32(textBox7.Text)+ Convert.ToInt32(textBox8.Text)+ Convert.ToInt32(textBox10.Text ))的ToString();
textBox12.Text =(Convert.ToInt32(textBox5.Text) - Convert.ToInt32(textBox11.Text))。ToString();
}
else if (textBox10.Text.Length == 0
{
// textBox11。 Text =(Convert.ToInt32(textBox6.Text)+ Convert.ToInt32(textBox7.Text)+ Convert.ToInt32(textBox8.Text)+ Convert.ToInt32(textBox9.Text)+ Convert.ToInt32(textBox10.Text))。ToString ();
textBox11.Text =(Convert.ToInt32(textBox6.Text)+ Convert.ToInt32(textBox7.Text)+ Convert.ToInt32(textBox8.Text)+ Convert.ToInt32(textBox9.Text ))的ToString();
textBox12.Text =(Convert.ToInt32(textBox5.Text) - Convert.ToInt32(textBox11.Text))。ToString();

}
else
textBox11.Text =(Convert.ToInt32(textBox6.Text)+ Convert.ToInt32( textBox7.Text)+ Convert.ToInt32(textBox8.Text)+ Convert.ToInt32(textBox9.Text)+ Convert.ToInt32(textBox10.Text))。ToString();
textBox12.Text =(Convert.ToInt32(textBox5.Text) - Convert.ToInt32(textBox11.Text))。ToString();

解决方案

使用 Int32.TryParse [ ^ ]为所有人文本框值,最后得到总和。示例代码:

  int  val1,val2; 
int .TryParse(textBox1.Text, out val1);
int .TryParse(textBox2.Text, out val2);
int sum = val1 + val2;



检查输入为空,你最好用一个以下方法

字符串。 IsNullOrEmpty方法 [ ^ ]

String.IsNullOrWhiteSpace方法 [ ^ ]

但即使不是空输入也可能导致格式异常,因为输入值不包含可选符号后跟a数字序列(0到9)。你最好使用 TryParse ,即使你有非数字字符,它也不会给出任何异常。另外,您可以使用 Int.TryParse 的返回值来通知用户输入格式不正确。


查看您的代码:

  if (textBox6.Text.Length ==  0 
{
textBox11.Text =(Convert.ToInt32(textBox7.Text)+ Convert.ToInt32(textBox8.Text)+ Convert.ToInt32(textBox9.Text)+ Convert.ToInt32(textBox10.Text ))的ToString();
textBox12.Text =(Convert.ToInt32(textBox5.Text) - Convert.ToInt32(textBox11.Text))。ToString();
}
else if (textBox7.Text.Length == 0



那么为什么你认为如果textBox6中有一些东西(gawd知道什么),那么 textBox7和textBox8,以及9,和10,以及5和11都包含有效数字吗?



不要这样做。

使用int.TryParse将每个文本框首先转换为数字,并将任何问题报告给用户。然后做你的检查并使用数据!



和BTW另外两件事:

1)不要那样检查文字:使用string.IsNullOrWhitespace - 它意味着文本框中的空格不计算!

2)请停止使用默认的Visual Studio名称!使用正确名称可能会在创建文本框或按钮时花费20秒的时间,但它会在以后节省您的时间,因为文本框的意图很明显,并且您的代码变为 - 至少一点 - 自我记录。


i want to calculte sum of five textboxes in 1 text box.... but when ever i remain empty one text box out of five textboxes it is giving an error Input string was not in the correct format below is my code

if (textBox6.Text.Length == 0)

        // textBox12.Text = (Convert.ToInt32(textBox5.Text) - Convert.ToInt32(textBox11.Text)).ToString();
        {
            textBox11.Text = (Convert.ToInt32(textBox7.Text) + Convert.ToInt32(textBox8.Text) + Convert.ToInt32(textBox9.Text) + Convert.ToInt32(textBox10.Text)).ToString();
            textBox12.Text = (Convert.ToInt32(textBox5.Text) - Convert.ToInt32(textBox11.Text)).ToString();
        }
        else if (textBox7.Text.Length == 0)
        {
            //textBox11.Text = (Convert.ToInt32(textBox6.Text) + Convert.ToInt32(textBox7.Text) + Convert.ToInt32(textBox8.Text) + Convert.ToInt32(textBox9.Text) + Convert.ToInt32(textBox10.Text)).ToString();
            textBox11.Text = (Convert.ToInt32(textBox6.Text) + Convert.ToInt32(textBox8.Text) + Convert.ToInt32(textBox9.Text) + Convert.ToInt32(textBox10.Text)).ToString();
            textBox12.Text = (Convert.ToInt32(textBox5.Text) - Convert.ToInt32(textBox11.Text)).ToString();
        }
        else if (textBox8.Text.Length == 0)
        {
            //textBox11.Text = (Convert.ToInt32(textBox6.Text) + Convert.ToInt32(textBox7.Text) + Convert.ToInt32(textBox8.Text) + Convert.ToInt32(textBox9.Text) + Convert.ToInt32(textBox10.Text)).ToString();
            textBox11.Text = (Convert.ToInt32(textBox6.Text) + Convert.ToInt32(textBox7.Text) + Convert.ToInt32(textBox9.Text) + Convert.ToInt32(textBox10.Text)).ToString();
            textBox12.Text = (Convert.ToInt32(textBox5.Text) - Convert.ToInt32(textBox11.Text)).ToString();
        }
        else if (textBox9.Text.Length == 0)
        {
            //textBox11.Text = (Convert.ToInt32(textBox6.Text) + Convert.ToInt32(textBox7.Text) + Convert.ToInt32(textBox8.Text) + Convert.ToInt32(textBox9.Text) + Convert.ToInt32(textBox10.Text)).ToString();
            textBox11.Text = (Convert.ToInt32(textBox6.Text) + Convert.ToInt32(textBox7.Text) + Convert.ToInt32(textBox8.Text) + Convert.ToInt32(textBox10.Text)).ToString();
            textBox12.Text = (Convert.ToInt32(textBox5.Text) - Convert.ToInt32(textBox11.Text)).ToString();
        }
        else if (textBox10.Text.Length == 0)
        {
            //textBox11.Text = (Convert.ToInt32(textBox6.Text) + Convert.ToInt32(textBox7.Text) + Convert.ToInt32(textBox8.Text) + Convert.ToInt32(textBox9.Text) + Convert.ToInt32(textBox10.Text)).ToString();
            textBox11.Text = (Convert.ToInt32(textBox6.Text) + Convert.ToInt32(textBox7.Text) + Convert.ToInt32(textBox8.Text) + Convert.ToInt32(textBox9.Text)).ToString();
            textBox12.Text = (Convert.ToInt32(textBox5.Text) - Convert.ToInt32(textBox11.Text)).ToString();

        }
        else
            textBox11.Text = (Convert.ToInt32(textBox6.Text) + Convert.ToInt32(textBox7.Text) + Convert.ToInt32(textBox8.Text) + Convert.ToInt32(textBox9.Text) + Convert.ToInt32(textBox10.Text)).ToString();
            textBox12.Text = (Convert.ToInt32(textBox5.Text) - Convert.ToInt32(textBox11.Text)).ToString();

解决方案

use Int32.TryParse[^] for all textbox values and finally get the sum. sample code:

int val1, val2;
int.TryParse(textBox1.Text,out val1);
int.TryParse(textBox2.Text,out val2);
int sum =  val1 + val2;


for check input for empty, you better use one of following methods
String.IsNullOrEmpty Method[^]
String.IsNullOrWhiteSpace Method[^]
but even not empty input could give format exception because of input value does not consist of an optional sign followed by a sequence of digits (0 through 9). you better use TryParse and it will not give any exception even you have non digit characters. additionally you can use return value of Int.TryParse to inform user about incorrect input format.


Look at your code:

if (textBox6.Text.Length == 0)
        {
            textBox11.Text = (Convert.ToInt32(textBox7.Text) + Convert.ToInt32(textBox8.Text) + Convert.ToInt32(textBox9.Text) + Convert.ToInt32(textBox10.Text)).ToString();
            textBox12.Text = (Convert.ToInt32(textBox5.Text) - Convert.ToInt32(textBox11.Text)).ToString();
        }
        else if (textBox7.Text.Length == 0)


So why do you think that if "textBox6" has something (gawd knows what) in it, then "textBox7", and "textBox8", and 9, and 10, and 5, and 11 will all have valid numbers in them?

Don't do it like that.
Use int.TryParse to convert each and every text box to a number first, and report any problems back to the user. Then do your checks and use the data!

And BTW two other things:
1) Don't check text that way: use string.IsNullOrWhitespace instead - it means that a space in a text box doesn't count!
2) Please, stop using the default Visual Studio names for things! Using "proper" names may take you 20 seconds longer when you create the textbox or button but it saves you ages later on because it is obvious what the textbox is meant to hold, and you code becomes - at least a little - self documenting.


这篇关于输入字符串的格式不正确:未处理的异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆