[C#][Windows Formsアプリ][TextBox] Enter/Leaveイベントでフォーカスの取得や喪失を検知する

スポンサーリンク

はじめに

TextBoxにカーソルが入ったときや、他のコントロールに移動してフォーカスが外れたときに
特定の処理を行いたい場合に便利なのが EnterLeave イベントです。
入力時の強調表示やフォーカス外れ時の確認処理などに活用できます。

 

Enter・Leaveイベントとは?

  • Enter … コントロールがフォーカスを取得したときに発生
  • Leave … コントロールがフォーカスを失ったときに発生
例:ユーザーがTextBoxをクリックして入力を始める → Enter イベント発生
入力を終えて別のボタンをクリック → Leave イベント発生

 

基本の使い方

イベントハンドラの追加方法

  1. TextBoxを選択する
  2. プロパティウィンドウのイベントタブ(⚡)を開く
  3. EnterLeave をそれぞれダブルクリックしてハンドラを生成

コード例

private void textBox1_Enter(object sender, EventArgs e)
{
    textBox1.BackColor = Color.LightYellow; // フォーカス時に背景色を変更
}

private void textBox1_Leave(object sender, EventArgs e)
{
    textBox1.BackColor = Color.White; // フォーカスが外れたら元に戻す
}

このように、ユーザーの入力状態を視覚的に分かりやすくすることができます。

 

実用例:入力欄のハイライト表示

using System;
using System.Drawing;
using System.Windows.Forms;

namespace EnterLeaveSample
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            textBox1.Enter += textBox1_Enter;
            textBox1.Leave += textBox1_Leave;
        }

        private void textBox1_Enter(object sender, EventArgs e)
        {
            textBox1.BackColor = Color.LightCyan;
        }

        private void textBox1_Leave(object sender, EventArgs e)
        {
            textBox1.BackColor = Color.White;
        }
    }
}

この例では、TextBoxにフォーカスが当たると水色に、外れると白に戻ります。
フォームの見た目をわかりやすくする典型的な使い方です。

 

Validatingとの違い

  • Leave は単純にフォーカスが外れたことを通知するだけ(キャンセル不可)
  • Validating はフォーカスが外れる直前に発生し、入力検証が可能(キャンセル可)

フォーカスが外れたときに単にデザイン上の処理を行うなら Leave
入力チェックをしたい場合は Validating を使うのが良いでしょう。

 

注意点

  • フォームの初期化時に Enter が呼ばれることがあるため、初期処理との競合に注意
  • 他のコントロールとのフォーカス移動で複数のイベントが連続して発生することがある
  • 入力チェックロジックは Leave よりも Validating に記述する方が安全

 

まとめ

  • Enter … フォーカスを得たときに発生(強調表示などに便利)
  • Leave … フォーカスを失ったときに発生(入力完了後の処理に活用)
  • Validating と用途を分けるのがポイント
Please follow and like us:

コメント

タイトルとURLをコピーしました