C#验证事件:测试空白文本框和数字验证?

时间:2014-09-13 19:31:50

标签: c# validating-event

因此,我尝试创建一个验证事件,确保文本框不是空的,并且输入的数字不超过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;
        }
}

2 个答案:

答案 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)