Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 筛选可以添加到文本框中的字符_Vb.net_Validation_Textbox_Input - Fatal编程技术网

Vb.net 筛选可以添加到文本框中的字符

Vb.net 筛选可以添加到文本框中的字符,vb.net,validation,textbox,input,Vb.net,Validation,Textbox,Input,我的表单上有一系列文本框,我的客户希望我过滤掉不允许的字符,例如在name字段中,不能有符号或数字 现在,他想要它,所以当你尝试输入一个特殊字符时,它就不会进入文本框。我知道这方面的逻辑,但我不确定如何编写代码 基本上,需要做的是当用户键入字符,如$,^,5,*等时,函数需要识别这一点,并阻止它们进入文本框,无论这意味着在它们进入时立即删除它们,还是完全中断操作 有人对此有所了解吗?非常感谢。您可以使用正则表达式: Private Sub TextBox1_TextChanged(ByVal s

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

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

基本上,需要做的是当用户键入字符,如
$,^,5,*
等时,函数需要识别这一点,并阻止它们进入文本框,无论这意味着在它们进入时立即删除它们,还是完全中断操作

有人对此有所了解吗?非常感谢。您可以使用正则表达式:

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,可以使用和设置


对于ASP.NET,您可以使用AJAX工具包。

您好,谢谢您的回答。虽然这个解决方案是可行的,但实际上这是针对一个学院项目(客户是我的学院),他们希望看到某种功能来处理这个问题,而不是让它全部通过预先制作的控件来处理。但是谢谢你的贡献,它会对我有用:)@Matt我已经更新了我对WinForms场景的响应。您可以编写一个类似的函数来接受字符串而不是textbox控件,并在需要时返回剥离的结果。