输入字符串格式不正确:未处理异常



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

        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) +
    }

你的代码会变得非常混乱。我建议你重构…

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

试一试

  • 先检查文本框是否有值,如果没有则用"0"代替,如下所示

    textBox6.Text == "" ? 0 : Convert.ToInt32(textBox6.Text)
    

使用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),尽管使用length并不是一个坏主意。

2)使用属性的文本框只允许数字字符。

3)解析前使用trim方法固定字符串

    String abc=textbox1.Text.trim();
4)调试时不要比较文本框中的字符串,使用长度进行比较。

相关内容

最新更新