带有无限掩码的蒙面TextBox

时间:2013-03-10 19:25:23

标签: c# .net winforms

我有一个蒙面文本框,只允许用户输入字母数字字母。

但是如何才能获得无限制输入的字母数量,因此可以输入任意数量的字母而不限于掩码?

        nameTextBox.ValidatingType = typeof(System.Char);
        nameTextBox.TypeValidationCompleted += new        TypeValidationEventHandler(nameTextBox_TypeValidationCompleted);

1 个答案:

答案 0 :(得分:0)

MaskedTextBox不支持MaxLength属性,如here所述。您必须指定具有特定长度的掩码,例如对于任何5个字符的“LLLLL”。如果你想要一个任意长度,你可能不得不使用常规的TextBox,并为Validating和TextChanged挂钩事件处理程序。为了给用户提供反馈,您可以在TextBox旁边添加一个标签,其中包含有效字符的信息以及它当前是否有效。

对于快速而肮脏的解决方案,您可以尝试:

private void TextBox_TextChanged(object sender, EventArgs e)
{
    var originalText = myMaskedTextBox.Text;
    var parsedText = Regex.Replace(myMaskedTextBox.Text, "[^a-z_A-Z]", "");

    if (originalText == parsedText)
        labelInfo.Text = "Valid string";
    else
    {
        myMaskedTextBox.Text = parsedText;
        labelInfo.Text = "Only alpha-numeric characters please";    
    }
}