|
.NET TIPS
PropertyGridコントロールを利用するには?
デジタルアドバンテージ 一色 政彦
2005/04/08 |
 |
|
次の画面のように、Visual Studio .NETのIDEでは、[プロパティ]ウィンドウにより、配置した各種コントロールのプロパティをデザイン時に設定することができる。
 |
Visual Studio .NETの[プロパティ]ウィンドウ |
Visual Studio .NETのIDEには、[プロパティ]ウィンドウにプロパティ編集用のコントロールが使われている。 |
[プロパティ]ウィンドウに使われているこのプロパティ設定用のコントロールは、実は「PropertyGridコントロール」と呼ばれる独立したコントロールとしてクラス・ライブラリに用意されている。このため、自分のWindowsアプリケーションでも簡単に利用できる。PropertyGridコントロールは、主にアプリケーションの初期設定やオプション設定の画面などに利用できるだろう。
本稿では、このPropertyGridコントロールをWindowsフォームで利用する方法について紹介する。ただし、Visual Studio .NETを利用するという前提で解説するので注意してほしい。
PropertyGridコントロールの利用方法
●[ツールボックス]ウィンドウへのPropertyGridコントロールの登録
PropertyGridコントロールは、標準では、IDEの[ツールボックス]ウィンドウに登録されていない(このため、PropertyGridコントロールが使えることは、あまり知られていない)。まずはこれを[ツールボックス]ウィンドウへ登録する必要がある。具体的には次の画面の手順で行えばよい。
 |
[ツールボックス]ウィンドウへのPropertyGridコントロールの登録 |
PropertyGridコントロールは、標準では、IDEの[ツールボックス]ウィンドウに登録されていないため、これを登録する必要がある。 |
|
 |
[ツールボックス]ウィンドウの[Windowsフォーム]タブ上で右クリックしてコンテキスト・メニューを表示し、そのメニューから[ツールボックスのカスタマイズ]を選択する。これにより、[ツールボックスのカスタマイズ]ダイアログが表示される。 |
|
 |
[ツールボックスのカスタマイズ]ダイアログの[.NET Framework コンポーネント]タブを選択する。 |
|
 |
コンポーネントの一覧の中から「PropertyGrid」を探し出し、そのチェック・ボックスにチェックを入れる。 |
|
 |
[ツールボックスのカスタマイズ]ダイアログの[OK]ボタンをクリックする。これで作業は完了だ。 |
|
 |
[ツールボックス]ウィンドウに[PropertyGrid]コントロールが追加されたのを確認できる。 |
|
●Windowsフォーム上へのPropertyGridコントロールの配置
次にPropertyGridコントロールをWindowsフォーム上に配置してみよう。これは通常のコントロールの配置と何ら変わらない。具体的には次の画面のように行えばよい。
 |
Windowsフォーム上へのPropertyGridコントロールの配置 |
PropertyGridコントロールをWindowsフォーム上に配置するには、通常のコントロールと同じように、[ツールボックス]ウィンドウから項目をドラッグ&ドロップするだけだ。 |
●プロパティ設定を行うオブジェクトの準備
PropertyGridコントロールはオブジェクトのプロパティを実行時に動的に設定可能にする。例えば、アプリケーションの設定情報(オブジェクト)をこのコントロールで編集できるようにしたいとする。これを実現するには、アプリケーションの設定情報用のクラスを作成する必要がある。本稿では、次のようなクラスを作成してみた。
using System;
using System.Drawing;
using System.Windows.Forms;
namespace WindowsApplication1
{
public class AppSettings
{
// プロパティの値を格納する変数
private FormWindowState myWindowState;
private Color myBackColor;
// コンストラクタでプロパティの値を初期化
public AppSettings()
{
myWindowState = FormWindowState.Normal;
myBackColor = SystemColors.Window;
}
// ウィンドウの表示状態を設定するプロパティ
public FormWindowState WindowState
{
get { return myWindowState; }
set { myWindowState = value; }
}
// ウィンドウの背景色を設定するプロパティ
public Color BackColor
{
get { return myBackColor; }
set { myBackColor = value; }
}
}
}
|
|
アプリケーションの設定情報用のクラス(C#) |
|
Public Class AppSettings
' プロパティの値を格納する変数
Private myWindowState As FormWindowState
Private myBackColor As Color
' コンストラクタでプロパティの値を初期化
Public Sub New()
myWindowState = FormWindowState.Normal
myBackColor = SystemColors.Window
End Sub
' ウィンドウの表示状態を設定するプロパティ
Public Property WindowState() As FormWindowState
Get
Return myWindowState
End Get
Set(ByVal Value As FormWindowState)
myWindowState = value
End Set
End Property
' ウィンドウの背景色を設定するプロパティ
Public Property BackColor() As Color
Get
Return myBackColor
End Get
Set(ByVal Value As Color)
myBackColor = value
End Set
End Property
End Class
|
|
アプリケーションの設定情報用のクラス(VB.NET) |
|
上記のクラスでは、アプリケーションの設定情報として、ウィンドウの表示状態(WindowState)と背景色(BackColor)のプロパティが実装されている。このように、PropertyGridコントロールでプロパティとして扱いたい項目は、当然ながらプロパティとして実装する必要がある。
●PropertyGridコントロールへのオブジェクトの指定
それでは実際に、このアプリケーションの設定情報クラスが持つ2つのプロパティを、PropertyGridコントロールに表示してみよう。これを行うには、PropertyGridコントロールを配置したフォームのLoadイベント・ハンドラなどで、そのオブジェクトをPropertyGridコントロールのSelectedObjectプロパティに指定すればよい。具体的には次のようなコードになる。
……前略……
private AppSettings myAppSettings;
private System.Windows.Forms.PropertyGrid propertyGrid1;
……中略……
public Form1()
{
……中略……
myAppSettings = new AppSettings();
}
……中略……
private void Form1_Load(object sender, System.EventArgs e)
{
// PropertyGridコントロールへオブジェクトを設定
propertyGrid1.SelectedObject = myAppSettings;
}
……後略……
|
|
任意のオブジェクトのPropertyGridコントロールへの指定(C#) |
|
……前略……
Private myAppSettings As AppSettings
Friend WithEvents propertyGrid1 As System.Windows.Forms.PropertyGrid
……中略……
Public Sub New()
MyBase.New()
……中略……
myAppSettings = New AppSettings()
End Sub
……中略……
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' PropertyGridコントロールへオブジェクトを設定
propertyGrid1.SelectedObject = myAppSettings
End Sub
……後略……
|
|
任意のオブジェクトのPropertyGridコントロールへの指定(VB.NET) |
|
以上で基本的な実装は完了だ。完成したプログラムを実行してみよう。実際に実行してみたのが、次の画面である。
 |
PropertyGridコントロールのサンプル・プログラムの実行結果 |
完成したプログラムを実行した画面。アプリケーションの設定情報クラス(AppSettingsクラス)に実装したプロパティが表示されている。 |
|
 |
AppSettingsクラスのBackColorプロパティが表示されている。右側のセルでウィンドウの背景色を選択して指定できる。 |
|
 |
AppSettingsクラスのWindowStateプロパティが表示されている。右側のセルでウィンドウの表示状態を(コンボボックスから)選択して指定できる。 |
|
以上がPropertyGridコントロールの基本的な使い方だ。しかし実際にこのコントロールを利用する場合、プロパティの値を変更したときに何らかの処理を実行したり、プロパティの入力欄の表示方法をカスタマイズしたり、プロパティ名を日本語で表示したりするなど、応用的な実装が必要となるだろう。これについては、「TIPS:PropertyGridコントロールの外観をカスタマイズするには?」などで紹介している。
|
generated by
|
|
Insider.NET 記事ランキング
本日
月間