因此,我尝试创建一个验证事件,确保文本框不是空的,并且输入的数字不超过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;
}
}
答案 0 :(得分:3)
尝试使用decimal.TryParse
方法尝试将string
转换为小数,并在转换成功时返回bool值,样本:
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;
}
}
答案 1 :(得分:0)
你清楚地提到自己的问题是什么。输入必须是可以转换为十进制数字的东西。
这似乎是输入错误的问题。您是否可以尝试使用TryParse,或者您可以简单地将第二个“if”块更改为“else if”。
decimal outputKWH;
kwh = decimal.TryParse(khtextBox.Text, out outputKWH)