1

如何在winforms中验证文本框控件中的文本?
我有一个控件,用户必须在其中放置字符串,例如“13:55”。我想显示 MessageBox,当这个值将不同时,而不是“XX:YY”。
怎么做?
在asp.net中很容易制作,但是如何在winforms上实现呢?

4

4 回答 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 回答