前回書いた通り、私は「PropertyGrid」(↓はFormに貼り付けたもの)

というものをよく知りませんし、使ったこともないので、これから皆さんと一緒に学んでゆきたいと思います。

 

1.外観

既定値で貼り付けたPropertyGridは、最上部に「項目別」と「アルファベット順」のボタンを持つツールバーがあり、その下に折り畳み(Collapse)と展開(Expand)可能なListView「みたいなもの」

があり、最後にステータスバー(かEditコントロールのようなもの)を持っているようです。(ツールバーはPropertyGrid.ToolbarVisible プロパティで、ステータスバーはPropertyGrid.HelpVisibleプロパティで非表示にできます。)

:これも私は知らなかったのですが、ListView用にListViewGroupクラスというものがあり、そいつのCollapsedStateというプロパティを使って折り畳み(Collapse)と展開(Expand)が可能、ということなんですが、私の使っている.Net Framework 4.8では「未対応」なんです。「じゃぁ、なんでPropertyGroupは.Net Framework 4.8で動くの?」という問いに対しての答えは別途【無駄話】で書きます。

 

2.何をするの?

PropertyGrid」には「オブジェクトのプロパティを参照するユーザー インターフェイスを提供します」としか書いていないので、よくわかりませんよね?

ご存じの通り、C#を含む現在のWindows上のプログラムはCLI(Common Language Infrastructure-共通言語基盤)ベースとなっています。このCLIによる中間言語プログラムは所謂"OOP(Object Oriented Programing)"ベースで、「フィールドにセッター(set)、ゲッター(get)が付いたプロパティ」を持つ「CLIベースのプログラムのオブジェクトObjectーVB.NETベースですが、C#の記事は無く、この方が分かり易いので...)」によって形成されています。そしてPropertyGrid」は、「CLIプログラムのプロパティを取得して、リスト形式で表示するコントロール」だと思います。従って、「ネイティブコードで変数とWin32 APIを使って書かれたプログラム等」は、情報をそのままこのコントロールで表示できないので、「一旦CLIベースのクラスオブジェクトかなんかで必要な情報をプロパティ化する」(例えばC#でファイル情報、画像情報やウィンドウ情報のクラスを作り、それに必要なデータを設定したクラスインスタンスをPropertyGridに渡す)ことが必要です。

 

3.最初のサンプル

↑で例示に使っているプログラム(PropertyGridTest.cs)は、使い廻しのDaialog風ウィンドウ(Form)にPropertyGridと終了ボタンを貼り付けただけのもので、PropertyGridには手っ取り早くこのサンプルプログラム自体を既定値として与えており、オプションとしてマウスクリック()で「ファイルを開くダイアログ」を出して、またはファイルをDrag & Dropしてファイル情報を表示させることが出来ます。

:これも色々と山あり、谷ありでしたが...これも別途愚痴をこぼしましょう。

 

先ずはこのサンプルプログラムを使ってPropertyGridに親しみましょうか?