テキストボックスの変更を検出する - Windows Formアプリケーション - C#

Windows Formアプリケーションのテキストボックスの変更を検出するコードを紹介します。

概要

Windows Formアプリケーションでテキストボックスに変更があったかを調べるには、TextBoxクラスのModified プロパティの値を確認します。

プログラム例

Windows Formアプリケーションで以下のプログラムを作成します。

UI

下図のフォームを作成します。ボタン、ラベル、Multilineプロパティをtrueに設定した、複数行のテキストボックスを配置します。

コード

次のコードを記述します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TextBoxDemo
{
  public partial class FormModifiedTextBox : Form
  {
    public FormModifiedTextBox()
    {
      InitializeComponent();
    }

    private void textBox1_KeyUp(object sender, KeyEventArgs e)
    {
      if (textBox1.Modified == true) {
        label1.Text = "テキストボックスの内容が変更されました。";
      }
    }

    private void button1_Click(object sender, EventArgs e)
    {
      textBox1.Modified = false;
      label1.Text = "";
    }
  }
}

なお、KeyUpのメソッドは配置したテキストボックスのKeyUpイベントのイベントハンドラとして設定します。

解説

テキストボックスでキーが入力され、KeyUpイベントが発生するごとに、テキストボックスの Modified プロパティの値を確認します。 テキストボックスの入力文字列に変更がある場合、Modified プロパティの値がtrue になりますので、ラベルに変更があった旨のメッセージを表示します。

ボタンがクリックされた場合は、Modifiedプロパティを falseに設定します。ボタンを押した時点から、テキストボックスの入力文字列に変更があった場合、Modifiedプロパティがtrueになり、 変更があった旨のメッセージをラベルに再度表示します。

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。


テキストボックス内の文字列を変更します。変更があると上部のラベルに 「テキストボックスの内容が変更されました。」のメッセージが表示されます。


さらにテキストを編集します。編集後[button1]ボタンをクリックします。


Modifiedプロパティがfalseに設定され、ラベルの文字列も空欄になります。この時点から変更があるかの検出ができます。


テキストボックスの文字列を変更します。変更が発生したため、上部のラベルに 「テキストボックスの内容が変更されました。」のメッセージが表示されます。


テキストボックスの入力文字列の変更を検出できました。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2021-10-29
作成日: 2021-10-29
iPentec all rights reserverd.