Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 输入字符串的格式不正确:未处理的异常_C#_Formatexception - Fatal编程技术网

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
中,但是在哪里可以计算和?在哪里可以计算和?