[C#][Windows Formsアプリ][TextBox] Validatingイベントで入力内容が正しいかをチェックする

スポンサーリンク

はじめに

フォーム上でユーザーの入力を検証したいときに役立つのがValidatingイベント です。
フォーカスが別のコントロールに移動する直前に発生し、不正な入力を検出して処理を中断できます。


Validatingイベントとは?

Validating イベントは、ユーザーがTextBoxから別のコントロールに移動するタイミングで発生します。
入力内容が正しいかをチェックし、必要に応じてフォーカスの移動をキャンセルすることができます。

例:ユーザーが数値以外を入力して別のTextBoxに移ろうとしたとき、
エラーを表示してそのまま同じTextBoxに留まらせることができます。

基本の使い方

イベントの設定方法

  1. TextBoxを選択
  2. プロパティウィンドウのイベントタブ(⚡)を開く
  3. 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 イベントはフォーカス移動時に入力を検証できる
  • CancelEventArgsCancel を設定すれば不正入力を防げる
  • 入力チェックとエラーメッセージ処理に最適

 

Please follow and like us:

コメント

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