C# 输入字符串的格式不正确:未处理的异常
我想计算一个文本框中五个文本框的总和。。。。 但是,当我一直空着五个文本框中的一个文本框时,它就给出了一个错误 输入字符串的格式不正确 下面是我的代码C# 输入字符串的格式不正确:未处理的异常,c#,formatexception,C#,Formatexception,我想计算一个文本框中五个文本框的总和。。。。 但是,当我一直空着五个文本框中的一个文本框时,它就给出了一个错误 输入字符串的格式不正确 下面是我的代码 if (textBox6.Text.Length == 0) // textBox12.Text = (Convert.ToInt32(textBox5.Text) - Convert.ToInt32(textBox11.Text)).ToString(); { textB
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();
// (Convert.ToInt32(textBox6.Text) +
}
耍花招
- 首先检查textbox是否有值,如果没有,则用“0”替换,如下所示
textBox6.Text == "" ? 0 : Convert.ToInt32(textBox6.Text)
- 首先检查textbox是否有值,如果没有,则用“0”替换,如下所示
textBox6.Text == "" ? 0 : Convert.ToInt32(textBox6.Text)
List<string> texts = new List<string>{textbox1.Text, textbox2.Text};
int sum = 0;
foreach(string t in texts)
{
int parse = 0;
if(!int.TryParse(t, out parse))
//Not a valid number
sum += parse;
}
textbox11.Text = sum.ToString();
List Text=新列表{textbox1.Text,textbox2.Text};
整数和=0;
foreach(文本中的字符串t)
{
int parse=0;
if(!int.TryParse(t,out parse))
//不是一个有效的数字
sum+=解析;
}
textbox11.Text=sum.ToString();
如果您想告诉用户哪个文本框是空的,您可以将其修改为来自文本框列表
如果要在页面上添加每个文本框,只需将列表替换为
var texts = this.Controls.OfType<TextBox>().Select(tb => tb.Text);
var Text=this.Controls.OfType().Select(tb=>tb.Text);
您的代码将变得非常混乱。。我建议你重构
List<string> texts = new List<string>{textbox1.Text, textbox2.Text};
int sum = 0;
foreach(string t in texts)
{
int parse = 0;
if(!int.TryParse(t, out parse))
//Not a valid number
sum += parse;
}
textbox11.Text = sum.ToString();
List Text=新列表{textbox1.Text,textbox2.Text};
整数和=0;
foreach(文本中的字符串t)
{
int parse=0;
if(!int.TryParse(t,out parse))
//不是一个有效的数字
sum+=解析;
}
textbox11.Text=sum.ToString();
如果您想告诉用户哪个文本框是空的,您可以将其修改为来自文本框列表
如果要在页面上添加每个文本框,只需将列表替换为
var texts = this.Controls.OfType<TextBox>().Select(tb => tb.Text);
var Text=this.Controls.OfType().Select(tb=>tb.Text);
要从文本框中获取整数,请使用Int.Tryparse()
string text = "x";
int num1;
bool res = int.TryParse(text, out num1);
if (res == false)
{
// String is not a number.
}
当您想从文本框中获取整数时,请使用Int.Tryparse()
string text = "x";
int num1;
bool res = int.TryParse(text, out num1);
if (res == false)
{
// String is not a number.
}
我想补充几点 1) 在编程实践中使用String.IsNullorEmpty(textBox1.Text),尽管使用长度不是一个坏主意 2) 在使用属性的文本框中只允许使用数字字符 3) 在解析字符串之前,请使用trim方法修复该字符串
String abc=textbox1.Text.trim();
4) 调试时不要比较文本框中的字符串,使用长度进行比较。我想添加一些要点 1) 在编程实践中使用String.IsNullorEmpty(textBox1.Text),尽管使用长度不是一个坏主意 2) 在使用属性的文本框中只允许使用数字字符 3) 在解析字符串之前,请使用trim方法修复该字符串
String abc=textbox1.Text.trim();
4) 调试时不要比较文本框中的字符串,请使用长度进行比较。是否调试了代码?具体在哪一行?您要转换的值是多少?您的当前文化是什么?请更具体一点。请告诉我们您的文本框中有哪些值?显然,其中一个文本框不包含有效的整数,否则所有输入字符串的格式都将正确。如果用户输入有任何不正确的可能性,您永远不能相信用户输入是正确的。您应该在尝试转换数据时使用
Integer.TryParse
来验证数据,这样会很正常地失败,并允许您提醒用户,忽略输入或任何合适的内容。@saba awan:为什么不使用TryParse()进行验证?如何进行验证?int.tryparse方法??您调试代码了吗?具体在哪一行?您要转换的值是多少?您的当前文化是什么?请更具体一点。请告诉我们您的文本框中有哪些值?显然,其中一个文本框不包含有效的整数,否则所有输入字符串的格式都将正确。如果用户输入有任何不正确的可能性,您永远不能相信用户输入是正确的。您应该在尝试转换数据时使用Integer.TryParse
来验证数据,这样会很正常地失败,并允许您提醒用户,忽略输入或任何合适的内容。@saba awan:为什么不使用TryParse()进行验证?如何进行验证?int.tryparse方法??这个列表在做什么?我的意思是它检查所有文本框吗?它只存储所有文本框文本的值,如果这些是表单上唯一的文本框,还有更好的方法可以计算总和吗?@sabaawan-什么样的示例代码?提供的代码获取所有文本框文本,检查它们是否为有效数字,然后将它们相加,并将它们存储在变量sum
中此列表的作用是什么?我的意思是它是否检查所有文本框?它只存储所有文本框文本的值,如果你的表格上只有这些文本框,那么还有更好的方法来计算总和吗?@sabaawan-什么的示例代码?提供的代码获取所有文本框文本,检查它们是否为有效数字,然后将它们相加并存储在变量sum
中,但是在哪里可以计算和?在哪里可以计算和?