获取文本框以仅接受vb.net中的字符

EqE*_*Edi 1 vb.net ascii keypress

我在Vb.net中创建一个简单的应用程序,我需要执行某些验证.所以我希望名称文本框仅接受来自az和AZ的字符.

为此,我写了以下代码:

   Private Sub txtname_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox5.KeyPress
    If Asc(e.KeyChar) <> 8 Then
        If Asc(e.KeyChar) > 65 Or Asc(e.KeyChar) < 90 Or Asc(e.KeyChar) > 96 Or Asc(e.KeyChar) < 122 Then
            e.Handled = True
        End If
    End If
End Sub
Run Code Online (Sandbox Code Playgroud)

但不知何故,它不允许我输入字符.当我尝试输入任何角色时,它什么都不做.

导致此问题的原因是什么?如何解决?

Joh*_*Woo 9

或者,你可以做这样的事情,

Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) _
                              Handles txtName.KeyPress

    If Not (Asc(e.KeyChar) = 8) Then
        Dim allowedChars As String = "abcdefghijklmnopqrstuvwxyz"
        If Not allowedChars.Contains(e.KeyChar.ToString.ToLower) Then
            e.KeyChar = ChrW(0)
            e.Handled = True
        End If
    End If

End Sub
Run Code Online (Sandbox Code Playgroud)

或者如果你仍然想要的ASCII方式,试试这个,

Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtName.KeyPress

    If Not (Asc(e.KeyChar) = 8) Then
        If Not ((Asc(e.KeyChar) >= 97 And Asc(e.KeyChar) <= 122) Or (Asc(e.KeyChar) >= 65 And Asc(e.KeyChar) <= 90)) Then
            e.KeyChar = ChrW(0)
            e.Handled = True
        End If
    End If

End Sub
Run Code Online (Sandbox Code Playgroud)

两者都表现得一样.