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# 验证事件:测试空白文本框和数字验证?的主要内容,如果未能解决你的问题,请参考以下文章