
テキストボックスのキー入力イベントについて紹介していきます。
キー入力には、主に3つのイベントがあるので、それぞれの特徴を見ていきましょう。
キー入力イベント KeyPress KeyDown KeyUp
キー入力イベントには、「keypress」「keydown」「keyup」の3つのイベントがあります。
それぞれの特徴をまとめてみました。
- 「KeyPress」と「KeyDown」は、キーを押下した時にイベントが発生します。
- 「KeyUp」は、指がキーから離れたときに発生します。
- 「KeyDown」と「KeyUp」は、すべてのキーボートが押されたときに発生します。
- 「KeyPress」は、「a」「b」「c」など文字のキーボードが押されたときに発生します。「tab」「shift」などを押されてもイベントは発生しません。
ただし「Enter」「BackSpace」「Esc」が押されたときはイベントが発生します。
まずは特徴をおさておきましょう。
KeyPressの使用方法
ここからは例を紹介していきます。
まずは、KeyPressを使用してみましょう。
テキストボックスを配置したら、イベント(稲妻マーク)アイコンをクリックして、「KeyPress」の部分でダブルクリックしてみましょう。
すると、テキストボックスに対して、「KeyPress」イベントが作成されました。
Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress
End Sub
テキストボックスにキーを押されたときに、メッセージボックスでどのキーが押されたのか表示する例を作成していきます。
KeyPressイベントで、どのキーを入力されたのか取得するには「e.KeyChar」で取得することができます。
Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress
MessageBox.Show("「" & e.KeyChar & "」が入力されました。")
End Sub
結果
試しに「a」を入力してみるとメッセージが表示されました。
このように、KeyPressからは「KeyChar」で入力された文字列を取得することができます。
特徴にも記載しましたが、「文字のキーボード」と「Enter」「BackSpace」「Esc」の時のみイベントが発生します。
KeyDown KeyUpの使用方法
続いて、KeyDownとKeyUpを試していきましょう。
先ほどのKeyPressと同様にイベントを作成していきます。
テキストボックスに対して、「KeyDown」イベントが作成されました。
Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyDown
End Sub
テキストボックスに対して、「KeyUp」イベントが作成されました。
Private Sub TextBox1_KeyUp(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyUp
End Sub
それでは、先ほどのようにメッセージボックスを表示してみましょう。
「KeyPress」は文字列を表示する「e.KeyChar」のプロパティがありましたが、「KeyDown」と「KeyUp」にはありません。
代わりに「e.KeyCode」がありますので、こちらで表示してみましょう。
KeyDownイベントに「KeyCode」
Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyDown
MessageBox.Show("「" & e.KeyCode & "」が入力されました。")
End Sub
KeyUpイベントに「KeyCode」
Private Sub TextBox1_KeyUp(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyUp
MessageBox.Show("「" & e.KeyCode & "」が入力されました。")
End Sub
試しに「a」を入力してみるとメッセージが表示されました。
結果
このように、「KeyDown」と「KeyUp」は、文字列を取得することはできず、文字コードで表示されます。
なので、「Keys.」を利用して、指定したキーを押されたとき処理をする、という感じでよく使います。
If e.KeyCode = Keys.A Then
MessageBox.Show("「" & e.KeyCode & "」が入力されました。")
End If
「A」を押されたときにメッセージを表示するという例です。
また、このイベントを利用して、一番よく使用されるのが、Enterキーでのイベントです。
こちらの例を別記事にまとめているので参考にしてみてください。
まとめ
今回は、キー入力イベントについてまとめました。
「KeyPress」を使うのか「KeyDown」「KeyUp」を使うのかをやりたいことから判断して使用するようにしましょう。
「KeyPress」は、文字列を取得することができます。
「KeyDown」「KeyUp」はKeyCodeを取得することができます。