.NET TIPS PropertyGridコントロールのプロパティ変更時に処理を行うには?デジタルアドバンテージ 一色 政彦2005/04/15 |
|
|
「TIPS:PropertyGridコントロールを利用するには?」では、PropertyGridコントロールの基本的な使い方を紹介した。本稿では、その応用的な実装として、PropertyGridコントロールによりプロパティの値が変更されたときに何らかの処理を実行する方法を紹介する。なお本稿ではVisual Studio .NETを用いて開発することを前提とする。
●PropertyValueChangedイベント・ハンドラの追加
プロパティの値が変更されたときに処理を行うには、PropertyGridコントロールのPropertyValueChangedイベントを受け取る必要がある。このPropertyValueChangedイベントは、PropertyGridコントロール上でプロパティ値が変更されたときに発生するイベントだ。
具体的には、次の画面の手順でPropertyValueChangedイベント・ハンドラを追加して、そのイベント・ハンドラ内に処理を記述する。
Visual Studio .NETでのPropertyValueChangedイベント・ハンドラの追加手順(VB.NETの場合) | |||||||||
プロパティの値を変更したときに何らかの処理を行うために、PropertyValueChangedイベント・ハンドラを追加しているところ。 | |||||||||
|
●PropertyValueChangedイベント・ハンドラの処理
後は上記の手順で追加されたPropertyValueChangedイベント・ハンドラの中に、必要な処理を記述すればよい。
例えば本稿では、前掲のTIPSのサンプル・プログラムにPropertyValueChangedイベント・ハンドラを追加して、そのイベント・ハンドラ内に次のようなコードを記述した。このコードでは、PropertyGridコントロールで変更された背景色やウィンドウ状態を取得し、新しい値をフォームのプロパティに反映する。
|
|
PropertyValueChangedイベント・ハンドラの処理(C#) |
|
|
PropertyValueChangedイベント・ハンドラの処理(VB.NET) |
PropertyValueChangedイベント・ハンドラでは、パラメータにより引き渡されるPropertyValueChangedEventArgsオブジェクト(System.Windows.Forms名前空間。本稿の例では「e」)のChangedItemプロパティにより、変更されたプロパティ項目であるGridItemオブジェクト(System.Windows.Forms名前空間)を取得できる。GridItemオブジェクトは、PropertyGridコントロールの1行を実装するためのものだ。
上記のコードでは、そのGridItemオブジェクトのPropertyDescriptor.Nameプロパティによりプロパティの名前を取得し、GridItemオブジェクトのValueプロパティにより現在設定されているプロパティの値を取得している。なお、GridItemオブジェクトのPropertyDescriptorプロパティには、PropertyDescriptorクラス(System.ComponentModel名前空間)のオブジェクトが設定されている。これは、プロパティの説明(=情報)を提供するためのものだ。つまり、PropertyDescriptor.Nameというプロパティは、プロパティの説明に関するオブジェクトからName(名前)という情報を取得しているわけである。
そして、取得したプロパティ名(“BackColor”か、“WindowState”か)に従って条件分岐し、それぞれ適切なフォームのプロパティに新しいプロパティ値を設定している。つまり、PropertyGridコントロールの“BackColor”プロパティが変更されればフォームのBackColorプロパティを、“WindowState”プロパティが変更されればフォームのWindowStateプロパティを即座に設定している。
このため、アプリケーションを実行して、例えばBackColorプロパティの項目の値を変更すれば、フォームは次の画面のようになる。
PropertyValueChangedイベント処理を行うサンプル・プログラムの実行結果 | ||||||
前掲の「TIPS:PropertyGridコントロールを利用するには?」のサンプル・プログラムに、PropertyValueChangedイベント処理を追加して、前述のサンプル・コードを記述したサンプル・プログラムを実行したところ。 | ||||||
|
このように、PropertyGridコントロールのPropertyValueChangedイベントを利用することで、プロパティの変更に合わせた動的な処理を実行することが可能になる。
カテゴリ:Windowsフォーム 処理対象:PropertyGridコントロール 使用ライブラリ:PropertyGridクラス(System.Windows.Forms名前空間) 使用ライブラリ:PropertyValueChangedEventArgsクラス(System.Windows.Forms名前空間) 使用ライブラリ:GridItemクラス(System.Windows.Forms名前空間) 使用ライブラリ:PropertyDescriptorクラス(System.ComponentModel名前空間) 関連TIPS:PropertyGridコントロールを利用するには? |
|
「.NET TIPS」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|