过滤可以添加到文本框的字符

时间:2010-01-27 22:59:42

标签: vb.net validation textbox input

我的表单上有一系列文本框,我的客户希望我过滤掉不允许的字符,例如name字段中没有符号或数字。

现在,他想要它,所以当你尝试输入一个特殊字符时,它就不会进入文本框。我知道这方面的后勤,但我不确定如何编码。

基本上需要发生的是当用户键入$, ^, 5, *等字符时,函数需要识别它并阻止它们进入文本框,这是否意味着一旦它们进入就删除它们或完全打断行动。

有人对此有所了解吗?感激不尽,谢谢。

1 个答案:

答案 0 :(得分:0)

您可以使用正则表达式:

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
    StripNonAlphabetCharacters(TextBox1)
End Sub

Public Sub StripNonAlphabetCharacters(ByVal input As TextBox)
    ' pattern matches any character that is NOT A-Z (allows upper and lower case alphabets)
    Dim rx As New Regex("[^a-zA-Z]")
    If (rx.IsMatch(input.Text)) Then
        Dim startPosition As Integer = input.SelectionStart - 1
        input.Text = rx.Replace(input.Text, "")
        input.SelectionStart = startPosition
    End If
End Sub

实际的Regex应该成为表单的成员,因此每次都不会声明它或者放入某个公共类以供参考。选择逻辑用于在剥离无效字符后将光标保持在当前位置。


对于WinForms,您可以使用MaskedTextBox Class并设置Mask property

对于ASP.NET,您可以使用AJAX Toolkit的MaskedEdit control