TextBoxを数値入力のみにする

メモ:

TextBoxで「XXコードの入力」といったコード類の入力で、数値のみ入力させたい場合があります。

そこで、次のようにTextBoxのKeyPressイベントを使用して数値のみ入力できるようにします。 (次の例では、数値とBackSpaceの入力のみ可能にしています。)

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

    Dim blnBackSpace As Boolean = Asc(e.KeyChar) = Keys.Back

    If (e.KeyChar < "0"c Or e.KeyChar > "9"c) _
             And Not blnBackSpace Then
        e.Handled = True
    End If
End Sub

KeyCharが数字であるかどうかは、Char.IsDigit()で知ることができるので次のようにすることもできます。

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

    Dim blnNumber As Boolean = Char.IsDigit(e.KeyChar)
    Dim blnBackSpace As Boolean = Asc(e.KeyChar) = Keys.Back

    If Not blnNumber And Not blnBackSpace Then
        e.Handled = True
    End If
End Sub