我怎样才能修复' System.FormatException'发生在mscorlib.dll中

时间:2018-03-13 12:30:27

标签: c#

请帮我解决这个问题...

这是我的代码:

    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 = "";
        }


    }

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

Parse,而不是Convert int value = 0; groupBox1.Enabled = int.TryParse(textBox9.Text, out value) && value <= 17;

Enable

我们groupBox1 textBox9.Text当且仅当

  1. value包含有效的整数value
  2. 17小于或等于"123 "
  3. 很好并且不要拒绝空格(例如,尾随空格:...Regex.IsMatch(textBox9.Text, "[^0-9]")...)和if (!int.TryParse(textBox9.Text, out value)) { MessageBox.Show("Please enter only numbers."); } 。再次尝试解析:

    public function categoriesTranslations()
    {
        return $this->hasMany(CategoriesTranslations::class);
    }
    
    public function getRouteKeyName()
    {
        $this->categoryTranslations->where('locale', Auth::user()->locale)->first()->getRouteKeyName();
    }