繁体   English   中英

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

[英]C# Validating event: test for blank textbox and number validation?

因此,我试图创建一个验证事件,以确保文本框不为空并且输入的数字不超过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转换为十进制,如果转换成功,则返回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;
   }
}

您清楚地提到了自己的问题所在。 输入必须是可以转换为十进制数字的值。

输入错误似乎是一个问题。 您可以尝试使用TryParse代替,还是可以简单地将第二个“ if”块更改为“ else if”。

decimal outputKWH;
kwh = decimal.TryParse(khtextBox.Text, out outputKWH)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM