はじめに
フォーム上でユーザーの入力を検証したいときに役立つのがValidatingイベント です。
フォーカスが別のコントロールに移動する直前に発生し、不正な入力を検出して処理を中断できます。
Validatingイベントとは?
Validating イベントは、ユーザーがTextBoxから別のコントロールに移動するタイミングで発生します。
入力内容が正しいかをチェックし、必要に応じてフォーカスの移動をキャンセルすることができます。
例:ユーザーが数値以外を入力して別のTextBoxに移ろうとしたとき、
エラーを表示してそのまま同じTextBoxに留まらせることができます。
エラーを表示してそのまま同じTextBoxに留まらせることができます。
基本の使い方
イベントの設定方法
- TextBoxを選択
- プロパティウィンドウのイベントタブ(⚡)を開く
Validatingをダブルクリックしてハンドラを作成
コード例
private void textBox1_Validating(object sender, System.ComponentModel.CancelEventArgs e)
{
if (string.IsNullOrWhiteSpace(textBox1.Text))
{
MessageBox.Show("値を入力してください。");
e.Cancel = true; // フォーカス移動をキャンセル
}
}
e.Cancel = true; とすることで、フォーカス移動を止めてユーザーに再入力を促せます。
実用例:数値入力チェック
using System;
using System.ComponentModel;
using System.Windows.Forms;
namespace ValidatingSample
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void textBoxNumber_Validating(object sender, CancelEventArgs e)
{
if (!int.TryParse(textBoxNumber.Text, out _))
{
MessageBox.Show("数値を入力してください。");
e.Cancel = true; // 不正な場合は移動をキャンセル
}
}
}
}
この例では、数字以外を入力して他のコントロールに移ろうとすると、警告が出てフォーカスが戻ります。
ValidatingとValidatedの違い
- Validating … フォーカスが移動する直前に発生(キャンセル可能)
- Validated … フォーカス移動後に発生(キャンセル不可)
入力チェックには Validating、成功後の後処理には Validated を使うのが基本です。
注意点
CausesValidationプロパティがfalseのボタンではValidatingが発生しない- フォーカス移動をキャンセルする場合、ユーザーがエラー理由を理解できるようにメッセージを表示する
- チェックロジックを重くしすぎるとUIが固まる原因になる
まとめ
Validatingイベントはフォーカス移動時に入力を検証できるCancelEventArgsのCancelを設定すれば不正入力を防げる- 入力チェックとエラーメッセージ処理に最適
Please follow and like us:

コメント