如何在winforms中验证文本框控件中的文本?
我有一个控件,用户必须在其中放置字符串,例如“13:55”。我想显示 MessageBox,当这个值将不同时,而不是“XX:YY”。
怎么做?
在asp.net中很容易制作,但是如何在winforms上实现呢?
问问题
5197 次
4 回答
4
如果您不想首先验证,请查看MaskedTextBox 。
var l_control = new MaskedTextBox();
l_control.Mask = "00\:00";
如果要使第一个数字可选:
l_control.Mask = "90\:90";
否则,您可以使用正则表达式。用冒号分隔的 4 位数字是:@"^\d{2}:\d{2}$"
. (该@
符号阻止 C# 将 '\' 视为转义字符 - 正则表达式没有任何独特之处。)
于 2012-10-12T20:07:46.273 回答
1
http://windowsclient.net/learn/videos.aspx上有三个验证视频,将引导您完成整个过程。
但使用蒙版文本框可能更容易,具体取决于您收集的数据。
哎呀,对于您正在做的事情,您可以非常安全并使用两个 NumericUpDown 控件,而根本不必处理验证。
于 2012-10-12T20:09:58.287 回答
0
你应该看看 C# Regex
Match match = Regex.Match(input, "^\d\d:\d\d$"));
if (!match.Success) MessageBox.Show("Error");
于 2012-10-12T20:09:21.680 回答
0
您也可以使用ErrorProvider而不是弹出消息框。msdn 上提供了ErrorProvider 类的示例。基本上你订阅了 Validated 事件
this.nameTextBox1.Validated += nameTextBox1Validated;
然后检查该值是否有效
private void nameTextBox1Validated(object sender, EventArgs e) {
if(isNameValid()) {
// clear error
nameErrorProvider.SetError(nameTextBox1, String.Empty);
}
else {
// set some helpful message
nameErrorProvider.SetError(nameTextBox1, "Invalid value.");
}
}
private bool isNameValid() {
// The logic for determining if a value is correct
return nameTextBox1.Text == "hello";
}
可以像这样创建错误提供程序
ErrorProvider nameErrorProvider = new ErrorProvider();
nameErrorProvider.SetIconAlignment(nameTextBox1, ErrorIconAlignment.MiddleRight);
nameErrorProvider.SetIconPadding(nameTextBox1, 2);
nameErrorProvider.BlinkRate = 1000;
nameErrorProvider.BlinkStyle = ErrorBlinkStyle.AlwaysBlink;
于 2012-10-12T20:43:45.380 回答