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

本文关键字:验证 数字 文本 测试 事件 空白 | 更新日期: 2023-09-27 18:21:42

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

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

尝试使用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)