このAsc
関数は古いVB6関数であり、新しい.NETコードを作成するときは避ける必要があります。この場合、次のように、キャラクターを比較して、特定の範囲内にあるかどうかを確認できます。
If e.KeyChar <> ControlChars.Back Then
If (e.KeyChar < "0"c) Or (e.KeyChar > "9"c) Then
e.Handled = True
End If
End If
ただし、次のように、有効な文字をリストすることをお勧めします。
e.Handled = ("0123456789.".IndexOf(e.KeyChar) = -1)
複数の小数点をチェックする限り、キープレスイベントで次のようなことを行うことができます。
If e.KeyChar = "."c Then
e.Handled = (CType(sender, TextBox).Text.IndexOf("."c) <> -1)
ElseIf e.KeyChar <> ControlChars.Back Then
e.Handled = ("0123456789".IndexOf(e.KeyChar) = -1)
End If
ただし、無効なキーストロークを除外できるのは便利ですが、そうすることには多くの問題があります。たとえば、すべてのチェックを行っても、次のエントリはすべて無効である可能性がありますが、すべて許可されます。
もう1つの大きな問題は、コードがカルチャに依存することです。たとえば、ヨーロッパでは、小数点としてコンマが使用されることがよくあります。これらの理由から、可能であれば、次のようにイベントで使用することをお勧めしDecimal.TryParse
ますValidating
。
Private Sub TextBox1_Validating(sender As Object, e As CancelEventArgs) Handles TextBox1.Validating
Dim control As TextBox = CType(sender, TextBox)
Dim result As Decimal = 0
Decimal.TryParse(control.Text, result)
control.Text = result.ToString()
End Sub