
今回はVB.NETで任意のコントロールにフォーカスをあてる方法を紹介していきます。
利用方法はとても簡単なのですが、1点注意点があるので、そこを備忘録として残しておきます。
最初に結論を紹介していきます。
コントロールにフォーカスを充てるには、「ActiveControl」と「Focus」を利用する必要があります。
- ロードイベントの時、「ActiveControl = 任意のコントロール名」
- その他イベントの時、「コントロール名.Focus()」
ロード時の場合はActiveControlを利用しないとフォーカスが当たらないので注意してください。
ロード処理時、各コントロールにフォーカスをあてる
ここからは、例を紹介してきます。
ロード処理の場合は、「ActiveControl」を利用します。
フォームに4つのテキストボックスを用意し、左から順に「textBox1」「textBox2」「textBox3」「textBox4」となっています。
一番右のテキストボックスにフォーカスをあてていきます。
Private Sub frmFocus_Load(sender As Object, e As EventArgs) Handles MyBase.Load
ActiveControl = TextBox4
End Sub
ロード処理時に一番右のテキストボックスにフォーカスが当たっていますね。
各コントロールにフォーカスをあてる
続いて、ロード処理以外のイベントの際にフォーカスをあてる方法を紹介していきます。
ロード処理以外のイベントの際には「Focus」を利用します。
一番右のテキストボックスで「Enter」を入力して際に一番左にフォーカスをあてるよう処理を作成していきます。
Private Sub TextBox4_KeyDown(sender As Object, e As KeyEventArgs) Handles TextBox4.KeyDown
If e.KeyCode = Keys.Enter Then
TextBox1.Focus()
End If
End Sub
実際に一番右のテキストボックスからフォーカスが一番左のテキストボックスに移動しました。
サンプルソース
最後にサンプルソースを載せておきます。
Public Class frmFocus
Private Sub frmFocus_Load(sender As Object, e As EventArgs) Handles MyBase.Load
ActiveControl = TextBox4
End Sub
Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyDown
If e.KeyCode = Keys.Enter Then
TextBox2.Focus()
End If
End Sub
Private Sub TextBox2_KeyDown(sender As Object, e As KeyEventArgs) Handles TextBox2.KeyDown
If e.KeyCode = Keys.Enter Then
TextBox3.Focus()
End If
End Sub
Private Sub TextBox3_KeyDown(sender As Object, e As KeyEventArgs) Handles TextBox3.KeyDown
If e.KeyCode = Keys.Enter Then
TextBox4.Focus()
End If
End Sub
Private Sub TextBox4_KeyDown(sender As Object, e As KeyEventArgs) Handles TextBox4.KeyDown
If e.KeyCode = Keys.Enter Then
TextBox1.Focus()
End If
End Sub
End Class
まとめ
今回は、各コントロールにフォーカスをあてる方法を紹介しています。
- ロードイベントの時、「ActiveControl = 任意のコントロール名」
- その他イベントの時、「コントロール名.Focus()」
ロード処理時に、「textBox4.Foucs()」と記載してもフォーカスが当たらないので、注意しましょう。
私も業務で良く忘れてしまうので、備忘録として残しておきました。