[C#][Windows Formsアプリ][TextBox] TextChangedイベントでテキストをリアルタイム処理する

スポンサーリンク

はじめに

TextBoxに入力があるたびにリアルタイムで処理を行いたいときに便利なのが
TextChangedイベント です。
ユーザーの入力、プログラムからの変更のいずれでも発生するため、入力検知の基本となります。

 

TextChangedイベントとは?

TextChanged イベントは、TextBoxの Text プロパティが変更されたときに発生します。
文字の追加・削除だけでなく、プログラムから textBox1.Text = "..." と代入した場合にも発生します。

例:ユーザーが「Hello」と入力 → 1文字ごとに TextChanged が発生する

 

基本の使い方

デザイナーで設定する方法

  1. TextBoxを選択する
  2. プロパティウィンドウの「イベント」ボタン(⚡アイコン)をクリック
  3. TextChanged をダブルクリックしてイベントハンドラを生成

コードで設定する方法

textBox1.TextChanged += new EventHandler(textBox1_TextChanged);

private void textBox1_TextChanged(object sender, EventArgs e)
{
    // 入力が変わるたびに呼ばれる
    label1.Text = textBox1.Text.Length + " 文字入力中";
}

 

実用例:文字数カウンター

using System;
using System.Windows.Forms;

namespace TextChangedSample
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            textBox1.TextChanged += textBox1_TextChanged;
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            labelCount.Text = "現在の文字数: " + textBox1.Text.Length;
        }
    }
}

この例では、入力するたびに文字数がリアルタイムで更新されます。

 

注意点

  • TextChanged は入力だけでなくプログラムからの Text 設定でも発生する
  • 短い入力ごとに頻繁に呼ばれるため、重い処理を直接書くのは非推奨
  • Enterキーや確定操作を検知したい場合は KeyDownValidating などのイベントと使い分ける

 

まとめ

  • TextChanged はTextBoxの内容が変更されるたびに発生するイベント
  • 入力検知やリアルタイムのバリデーションに最適
  • 処理が重くならないように注意して利用する

フォームアプリで「入力に反応する仕組み」を作る際には必ず利用するイベントです。

Please follow and like us:

コメント

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