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