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

Posted

技术标签:

【中文标题】C# 验证事件:测试空白文本框和数字验证?【英文标题】:C# Validating event: test for blank textbox and number validation? 【发布时间】:2014-09-13 19:31:49 【问题描述】:

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

【问题讨论】:

第一个 if 之后的 return 或将 if (kwh > 2000) 替换为 else if (kwh > 2000) 这应该可以解决您的问题。 【参考方案1】:

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

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

以上是关于C# 验证事件:测试空白文本框和数字验证?的主要内容,如果未能解决你的问题,请参考以下文章

JS:checkFrom对输入框和文本框的判断总结

如何使用javascript在asp.net中gridview内的按钮单击上应用文本框空白验证?

asp.net怎么限制文本框输入的类型c#

验证文本框是不是仅包含数字

文本输入框和下拉菜单特效-用正则表达式验证E-mail格式

如何用jquery验证文本框只能输入字母数字和下划线