请帮我解决这个问题...
这是我的代码:
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 = "";
}
}
答案 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
当且仅当
value
包含有效的整数value
17
小于或等于"123 "
请很好并且不要拒绝空格(例如,尾随空格:...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();
}