我想在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();
// (Convert.ToInt32(textBox6.Text) +
}
答案 0 :(得分:5)
你的代码会变得非常混乱......我建议你重构..
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();
如果您希望告诉用户哪个文本框为空,您可以将其修改为文本框列表
如果要添加页面上的每个文本框,只需用
替换列表即可var texts = this.Controls.OfType<TextBox>().Select(tb => tb.Text);
答案 1 :(得分:0)
尝试一个技巧
首先检查文本框是否有值,如果没有,则将其替换为“0”,如下所示
textBox6.Text == "" ? 0 : Convert.ToInt32(textBox6.Text)
答案 2 :(得分:0)
当你想从textbox获取Integer时,使用Int.Tryparse()。它必须是这样的,
string text = "x";
int num1;
bool res = int.TryParse(text, out num1);
if (res == false)
{
// String is not a number.
}
答案 3 :(得分:0)
我想补充一些要点
1)在编程实践中使用String.IsNullorEmpty(textBox1.Text),虽然使用长度并不是一个坏主意。
2)仅允许使用属性在文本框中使用数字字符。
3)在解析之前使用trim方法修复字符串。
String abc=textbox1.Text.trim();
4)调试时不要比较文本框中的字符串,使用长度进行比较。