在TextBox中只允许数字

时间:2017-09-16 14:47:25

标签: vb.net

以下是有关如何仅允许文本框中的数字的代码:

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress

    '97 - 122 = Ascii codes for simple letters
    '65 - 90  = Ascii codes for capital letters
    '48 - 57  = Ascii codes for numbers

    If Asc(e.KeyChar) <> 8 Then
        If Asc(e.KeyChar) < 48 Or Asc(e.KeyChar) > 57 Then
            e.Handled = True
        End If
    End If

End Sub

我在这里不了解一件事。在If Asc(e.KeyChar) <> 8 Then中,为什么使用数字8?这里用8代表什么? 请解释

3 个答案:

答案 0 :(得分:0)

试试这个:

Dim BACKSPACE As Boolean

Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
    If e.KeyCode = Keys.Back Then
        BACKSPACE = True
    Else
        BACKSPACE = False
    End If
End Sub

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
    If BACKSPACE = False Then
        Dim allowedChars As String = "0123456789"
        If allowedChars.IndexOf(e.KeyChar) = -1 Then
            e.Handled = True
        End If
    End If
End Sub

处理粘贴字符的方法:选择textbox1并转到“属性”,然后:将ShortcutsEnabled设置为“False”,或者使用MaskedTextBox

我希望我的代码对你有用:)

答案 1 :(得分:0)

在阅读了2次问题之后,我终于得到了你所说的话。您从互联网或某处获得此代码,但您不知道If Asc(e.KeyChar) <> 8 Then中的 8 是什么意思?

嗯,答案是:这意味着 Backspace 键。

Mousa Alfhaily 在不使用ASCII方式的情况下编写了相同的代码 很简单,If Asc(e.KeyChar) <> 8 Then在他的代码中意味着If BACKSPACE = False Then

有关ASCII值的更多参考,请访问以下网站:ASCII table

答案 2 :(得分:-1)

ASCII中,0到9的数值表示为48到57.您可以在下面的链接中查看所有ASCII的列表。

List of all ASCII values

值8代表Backspace密钥。