ここではテキストボックス(TextBoxコントロール)のフォーカス移動時のイベントについて紹介します。
目次
フォーカス設定時のイベント順
フォーカスが設定された際は、次の順序でイベントが発生します。
- Enterイベント(エンター イベント)
フォーカスを取得したときに発生する。 - GotFocusイベント(ゴットフォーカス イベント)
フォーカスを取得したときに発生する。このイベントは使用しない。
フォーカス変更時のイベント順
フォーカスが変更された際は、次の順序でイベントが発生します。
- Leaveイベント(リーブ イベント)
フォーカスを失ったときに発生します。 - Validatingイベント(ヴァリデイティング イベント)
フォーカスを失ったときに発生します。入力チェックに使用され、フォーカスの移動をキャンセルすることができます。 - Validatedイベント(ヴァリデイテッド イベント)
フォーカスを失ったときに発生します。入力後の処理に使用されます。 - 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コントロール)のフォーカス移動時のイベントについて解説しました。