ここではテキストボックス(TextBoxコントロール)のフォーカス移動時のイベントについて紹介します。

フォーカス設定時のイベント順

フォーカスが設定された際は、次の順序でイベントが発生します。

  1. Enterイベント(エンター イベント)
    フォーカスを取得したときに発生する。
  2. GotFocusイベント(ゴットフォーカス イベント)
    フォーカスを取得したときに発生する。このイベントは使用しない。


フォーカス変更時のイベント順

フォーカスが変更された際は、次の順序でイベントが発生します。

  1. Leaveイベント(リーブ イベント)
    フォーカスを失ったときに発生します。
  2. Validatingイベント(ヴァリデイティング イベント)
    フォーカスを失ったときに発生します。入力チェックに使用され、フォーカスの移動をキャンセルすることができます。
  3. Validatedイベント(ヴァリデイテッド イベント)
    フォーカスを失ったときに発生します。入力後の処理に使用されます。
  4. LostFocusイベント(ロストフォーカス イベント)
    フォーカスを失ったときに発生します。通常このイベントは使用しません。


イベントの実装例

Enterイベントの実装例

TextBoxにフォーカスが移動した際に、TextBoxの文字の入力位置(キャレット)を先頭にカーソルが移動する例です。

Private Sub TextBox1_Enter(sender As Object, e As EventArgs) Handles TextBox1.Enter
    ' フォーカスを取得したときにテキストボックスの先頭にカーソルを移動する
    TextBox1.SelectionStart = 0
End Sub

以下はTextBoxにフォーカスが移動した際に、TextBoxの文字の入力位置(キャレット)を末尾にカーソルが移動する例です。

Private Sub TextBox1_Enter(sender As Object, e As EventArgs) Handles TextBox1.Enter
    ' フォーカスを取得したときにテキストボックスの末尾にカーソルを移動する
    TextBox1.Select(TextBox1.Text.Length, 0)
End Sub


Leaveイベントの実装例

以下はTextBoxがフォーカスを失った際に、TextBoxの背景色を変える例です。

Private Sub TextBox1_Leave(sender As Object, e As EventArgs) Handles TextBox1.Leave
    ' フォーカスを失ったときに背景色を黄色にする
    TextBox1.BackColor = Color.FromKnownColor(KnownColor.Yellow)
End Sub


Validatingイベントの実装例

以下はTextBoxがフォーカスを失った際に、TextBoxの入力値をチェックする例です。

Private Sub TextBox1_Validating(sender As Object, e As CancelEventArgs) Handles TextBox1.Validating
    ' フォーカスを失ったとき入力チェックを行い、エラーの場合は入力を取り消す
    If IsNumeric(TextBox1.Text) = False Then
        MessageBox.Show("数値以外が入力されています。", "エラー",
                        MessageBoxButtons.OK, MessageBoxIcon.Error)
        e.Cancel = True
    End If
End Sub


Validatedイベントの実装例

以下はTextBoxがフォーカスを失った際に、TextBoxの入力値をカンマ区切りに編集する例です。

Private Sub TextBox1_Validated(sender As Object, e As EventArgs) Handles TextBox1.Validated
    ' フォーカスを失ったときカンマ区切りに編集する
    TextBox1.Text = String.Format("{0:#,###}", Integer.Parse(TextBox1.Text))
End Sub


以上、テキストボックス(TextBoxコントロール)のフォーカス移動時のイベントについて解説しました。