はじめに
TextBoxにカーソルが入ったときや、他のコントロールに移動してフォーカスが外れたときに
特定の処理を行いたい場合に便利なのが Enter と Leave イベントです。
入力時の強調表示やフォーカス外れ時の確認処理などに活用できます。
Enter・Leaveイベントとは?
- Enter … コントロールがフォーカスを取得したときに発生
- Leave … コントロールがフォーカスを失ったときに発生
例:ユーザーがTextBoxをクリックして入力を始める →
入力を終えて別のボタンをクリック →
Enter イベント発生入力を終えて別のボタンをクリック →
Leave イベント発生
基本の使い方
イベントハンドラの追加方法
- TextBoxを選択する
- プロパティウィンドウのイベントタブ(⚡)を開く
EnterとLeaveをそれぞれダブルクリックしてハンドラを生成
コード例
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:

コメント