因此,我正在尝试创建一个验证事件,以确保文本框不为空,并且输入的数字不超过2000。我已经发布了我所拥有的内容,但每次运行它时,我都会收到一条消息,说由于"kwh=decimal.Parse(khtextBox.Text)"输入的格式不正确,所以没有处理异常。按照我的方式,如果数字超过2000,则验证有效,但如果文本框为空,则验证无效。我做错了什么?也是编程新手,所以请像和3岁的孩子说话一样解释!谢谢:)
private void khtextBox1_Validating(object sender, CancelEventArgs e)
{
decimal kwh;
kwh = decimal.Parse(khtextBox1.Text);
bool blank = false;
if (blank)
{
MessageBox.Show("Please enter a valid number.");
}
if (kwh > 2000)
{
MessageBox.Show("Kilowatt-Hours cannot exceed 2000.");
e.Cancel = true;
}
}
尝试使用decimal.TryParse
方法,该方法尝试将string
转换为十进制,如果转换成功,则返回布尔值,例如:
decimal kwh;
if (!decimal.TryParse(khtextBox1.Text, out kwh)) // check if the conversion has failed
{
MessageBox.Show("Please enter a valid number.");
e.Cancel = true;
}
else // conversion ok, you can use the kwh value
{
if (kwh > 2000)
{
MessageBox.Show("Kilowatt-Hours cannot exceed 2000.");
e.Cancel = true;
}
}
您清楚地提到了问题所在。输入必须是可以转换为十进制的数字。
这似乎是一个输入错误的问题。你可以尝试使用TryParse代替吗?或者你可以简单地将第二个"if"块更改为"else-if"。
decimal outputKWH;
kwh = decimal.TryParse(khtextBox.Text, out outputKWH)