Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows. Forms.KeyPressEventArgs) Handles TextBox1.KeyPress '半角数値(0〜9)と BaclSpace のみ入力を可能にする If (e.KeyChar < "0"c Or e.KeyChar > "9"c) And e.KeyChar <> vbBack Then e.Handled = True End If End Sub
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress Dim bKeyNum As Boolean = Char.IsDigit(e.KeyChar) If bKeyNum <> True Then e.Handled = True End If End Sub
"e.Handled = True"はKeyPressイベントをキャンセルしてテキストボックスに表示しないことを意味する。
[注意]ただし、コピペされた場合は数値以外も入力される。これを防ぐためには、TextChangedイベントに次のようなコードを書いておく。
Private Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged 'テキストのTextプロパティの値を1文字ずつ数値か否かを判定し、数値でない場合は破棄、数値であれば表示する。 Dim newText As System.Text.StringBuilder = New System.Text.StringBuilder(Text.Length) For Each ch As Char In TextBox1.Text If Char.IsDigit(ch) = True Then ''文字(ch)が10進数の数値であれば、新しい文字列オブジェクトに追加していく。 newText.Append(ch) End If Next '文字列オブジェクトnewTextをテキストボックスに表示する。 If (TextBox1.TextLength <> newText.Length) Then Dim start As Integer = TextBox1.SelectionStart Dim len As Integer = TextBox1.SelectionLength TextBox1.Text = newText.ToString() If start >= 0 And len >= 0 Then TextBox1.SelectionStart = start TextBox1.SelectionLength = len End If End If End Sub
SelectionStartプロパティはテキストボックスで選択されているテキストの開始点を示すプロパティである。もし、TextBox1.SelectionLengthが0ならばカレットの位置になる。
また、SelectionLengthプロパティはテキストボックスで選択されている文字列の長さのプロパティである。 ◇
[注意]テキストボックスに"あ1"と入力したりコピペすると、"1"が表示される。 ◇
[注意]"1"(全角)も表示される。 ◇
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress If e.KeyChar = Chrw(Keys.Return) Then (処理) e.Handled = True End If End Sub