
今回は、業務でもよく使う、Enterキーイベントについて備忘録として残しておきます。
Enterキーイベントは、フォーカスを次コントロールへ移動させたい時や、
バーコードを読み取ったときにイベントを発生させたりする時によく使用します。
よく使うイベントなので、是非参考にしてみてください。
ENTERキーイベント
ENTERキーイベントを利用するには、まず「KeyDown」について押さえとく必要があります。
「KeyDownってなに?」という人は先にこちらの記事を参考にしてみてください。
それでは、さっそく例を見ていきましょう。
Enterキーイベント(コントロール単位)
このように3つのテキストボックスを準備しました。
Enterキーを押下して、次のコントロールへ移動させてみましょう。
Public Class frmEnterKey
Private Sub frmEnterKey_Load(sender As Object, e As EventArgs) Handles MyBase.Load
TextBox1.TabIndex = 1
TextBox2.TabIndex = 2
TextBox3.TabIndex = 3
End Sub
Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyDown
If e.KeyCode = Keys.Enter Then
Me.SelectNextControl(Me.ActiveControl, True, True, True, True)
End If
End Sub
End Class
解説
3-7行目:画面ロードイベントで、コントロールの順番を設定する。tabindexで移動する順番を指定することができます。
9-15行目:「TextBox1」のKeyDownイベントを作成。
11行目:「Enterキー」の時のみ処理を行う。
12行目:Me.SelectNextControl(Me.ActiveControl, True, True, True, True) は、次のコントロールへ移動するという処理になります。コピーして使ってみてください!
結果
Enterキーを押下することで、次のコントロールへフォーカスが移りました。
このように、コントロールのKeyDownイベントを利用して作成することができます。
(今回の例は、TextBox1にしかKeyDownイベントを作成していませんので、TextBox2、3も同様に作成する必要があります。)
Enterキーイベント(フォーム)
先ほどは、コントロール単位(一つ一つのテキストボックス)にイベントを作成して、処理を作成しました。
今度は、フォーム全体にEnterキーイベントを作成してみましょう。
先ほどと同じ画面を利用して作成してみましょう。
ソースコードを載せています。
Public Class frmEnterKey
Private Sub frmEnterKey_Load(sender As Object, e As EventArgs) Handles MyBase.Load
TextBox1.TabIndex = 1
TextBox2.TabIndex = 2
TextBox3.TabIndex = 3
Me.KeyPreview = True
End Sub
Private Sub frmEnterKey_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
If e.KeyCode = Keys.Enter Then
Me.SelectNextControl(Me.ActiveControl, True, True, True, True)
End If
End Sub
End Class
解説
3-11行目:フォームのロードイベント。先ほどと同じようにTabIndexを指定。
9行目:FormのKeyDownを使うときは、「Me.KeyPreview = True」を記載しましょう。
13-19行目:Enterキーイベント 次のコントロールへフォーカスを移動させる。
結果
同じようにフォーカスを移動させることができました。
今回は、フォーム全体のイベントとして作成しましたので、すべてのテキストボックスでEnterキーイベントが発生するかと思います。
まとめ
今回は、Enterキーイベントの例を紹介しました。
いろんな場面で、Enterキーイベントを使用することがあると思うので、是非参考にしてみてください。