.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コントロールの外観をカスタマイズするには?」などで紹介している。End of Article

カテゴリ:Windowsフォーム 処理対象:PropertyGridコントロール
使用ライブラリ:PropertyGridクラス(System.Windows.Forms名前空間)
関連TIPS:PropertyGridコントロールの外観をカスタマイズするには?
 
この記事と関連性の高い別の.NET TIPS
PropertyGridコントロールの表示内容をカスタマイズするには?
PropertyGridコントロールの外観をカスタマイズするには?
PropertyGridコントロールのプロパティ変更時に処理を行うには?
PropertyGridコントロールに表示されるプロパティ名を変更するには?
Windowsフォームで簡単に画像を表示するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間