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