我的表单上有一系列文本框,我的客户希望我过滤掉不允许的字符,例如name
字段中没有符号或数字。
现在,他想要它,所以当你尝试输入一个特殊字符时,它就不会进入文本框。我知道这方面的后勤,但我不确定如何编码。
基本上需要发生的是当用户键入$, ^, 5, *
等字符时,函数需要识别它并阻止它们进入文本框,这是否意味着一旦它们进入就删除它们或完全打断行动。
有人对此有所了解吗?感激不尽,谢谢。
答案 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。