VB.NET 任意のコントロールへフォーカスをあてる方法

今回は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()」と記載してもフォーカスが当たらないので、注意しましょう。
私も業務で良く忘れてしまうので、備忘録として残しておきました。

 

VB.NETの記事一覧

おすすめの記事