Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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# 如何修复';System.FormatException';发生在mscorlib.dll中_C# - Fatal编程技术网

C# 如何修复';System.FormatException';发生在mscorlib.dll中

C# 如何修复';System.FormatException';发生在mscorlib.dll中,c#,C#,请帮我解决这个问题 这是我的代码: private void textBox9_TextChanged(object sender, EventArgs e) { if (Convert.ToInt32(textBox9.Text) > 17) //error here in this line { groupBox1.Enabled = false; } else

请帮我解决这个问题

这是我的代码:

    private void textBox9_TextChanged(object sender, EventArgs e)
    {


        if (Convert.ToInt32(textBox9.Text) > 17) //error here in this line
        {
            groupBox1.Enabled = false;
        }
        else
        {
            groupBox1.Enabled = true;
        }


        if (System.Text.RegularExpressions.Regex.IsMatch(textBox9.Text, "[^0-9]"))
        {
            MessageBox.Show("Please enter only numbers.");
            textBox9.Text = "";
        }


    }

不要使用
Convert.ToInt32(
使用,因为如果传递的值不是整数,则会出现问题

     int number = 0;
     bool result = Int32.TryParse(textBox9.Text, out number);
     if (result)
     {
        if (number > 17) 
          {
              groupBox1.Enabled = false;
         }
        else
         {
            groupBox1.Enabled = true;
         }       
     }
在C#7.0中,您可以这样做,您不需要在外部声明变量

     if (Int32.TryParse(textBox9.Text, out int number))
     {
        if (number > 17) 
          {
              groupBox1.Enabled = false;
         }
        else
         {
            groupBox1.Enabled = true;
         }       
     }

不要使用
Convert.ToInt32(
使用,因为如果传递的值不是整数,则会出现问题

     int number = 0;
     bool result = Int32.TryParse(textBox9.Text, out number);
     if (result)
     {
        if (number > 17) 
          {
              groupBox1.Enabled = false;
         }
        else
         {
            groupBox1.Enabled = true;
         }       
     }
在C#7.0中,您可以这样做,您不需要在外部声明变量

     if (Int32.TryParse(textBox9.Text, out int number))
     {
        if (number > 17) 
          {
              groupBox1.Enabled = false;
         }
        else
         {
            groupBox1.Enabled = true;
         }       
     }

放置
TryParse
,而不是
Parse
Convert

  int value = 0;

  groupBox1.Enabled = int.TryParse(textBox9.Text, out value) && value <= 17;

放置
TryParse
,而不是
Parse
Convert

  int value = 0;

  groupBox1.Enabled = int.TryParse(textBox9.Text, out value) && value <= 17;

我猜文本内容不能解析为int?!请使用TryParseAccording,如果
值不包含后跟数字序列(0到9)的可选符号,则会引发该异常。
。因此,请提供一个有效的整数值。可能是空格或其他-Trim()这对你有用吗?@Maipoi Licalie:不客气!我猜文本内容不能解析为int?!使用TryParseAccording,当
值不包含可选符号和数字序列(0到9)时会引发异常.
。因此,请提供一个有效的整数值。也许空格或其他-Trim()对您有效???@Maipoi Licalie:不客气!您甚至不需要变量'result'@TimvanPeterson——是的,但为了更好地理解,我保留在那里。我们可以直接将语句放入if中,在新版本C#7.0中是的(我猜)您可以在内部定义变量too@MaipoiLicalie-欢迎,如果为您工作,请接受upvote您甚至不需要变量'result'@TimvanPeterson-是的,但为了更好地理解我保留在那里..我们可以直接在if中添加语句,在新版本C#7.0中添加yes(我想)您可以在内部定义变量too@MaipoiLicalie-欢迎,如果为您工作,请接受upvote