VB.NET テキストボックス KeyPress KeyDown KeyUp 使い方

テキストボックスのキー入力イベントについて紹介していきます。

キー入力には、主に3つのイベントがあるので、それぞれの特徴を見ていきましょう。

キー入力イベント KeyPress KeyDown KeyUp

キー入力イベントには、「keypress」「keydown」「keyup」の3つのイベントがあります。

それぞれの特徴をまとめてみました。

「KeyDown・KeyUp・KeyPress」発生イベントの違い
  • 「KeyPress」と「KeyDown」は、キーを押下した時にイベントが発生します。
  • 「KeyUp」は、指がキーから離れたときに発生します。
「KeyDown・KeyUp」「KeyPress」押されたキーの違い
  • 「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を取得することができます。

 

VB.NETの記事一覧

おすすめの記事