2

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

2 回答 2

3

尝试使用该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;
   }
}
于 2014-09-13T19:38:22.017 回答
0

你清楚地提到自己是什么问题。输入必须是可以转换为十进制的一些数字。

这似乎是输入错误的问题。您能否尝试改用 TryParse,或者您可以简单地将第二个“if”块更改为“else if”。

decimal outputKWH;
kwh = decimal.TryParse(khtextBox.Text, out outputKWH)
于 2014-09-13T19:42:41.130 回答