9

下の写真の「MyCars」はコレクションです。オブジェクトのプロパティがコレクションの場合、PropertyGridでは、アイテムが選択されている場合、値は文字列 "(Collection)"として表示され、右側にボタンが表示されます。

「(Collection)」の値を変更することはできますか?もしそうなら、どのように? 私が尋ねる理由は、プログラムのPropertyGridに表示されるオブジェクトにカスタムUITypeEditorを実装したためです。これまでのところ、右側のボタンが表示されていますが、テキスト値はプロパティの表示名と同じです。そこに別の文字列を表示したいのですが。

propertygridの例。

編集:価値があるので、PaintValueUITypeEditorからメソッドをオーバーライドしてアイコンを提供できることはわかっていますが、この問題を解決できない場合は、最終的には実行する可能性がありますが、それがどのように行われるかを知りたいです。コレクション)」のテキストは変更できます。

4

1 に答える 1

8

この記事PropertyGridでのコレクションデータのカスタマイズされた表示が役立つ場合があります。


**更新**

記事の要約バージョンを提供するために(リンクが利用できない場合)、PropertyGridのコレクションコンテンツの表示と説明をカスタマイズする手順は次のとおりです。

  1. 抽象基本クラスからクラスを派生させることにより、カスタムプロパティ記述子を提供しますPropertyDescriptor
  2. 抽象メソッドとプロパティをオーバーライドします。DisplayNameおよびdescriptionプロパティの適切な実装を提供します。
  3. コレクションクラスにICustomTypeDescriptorインターフェイスを実装させます。
  4. GetProperties()メソッドによってカスタムプロパティ記述子のコレクションを返します。
  5. オプションTypeConverterで、.NETが提供する派生オブジェクトを使用するか、独自のクラスを実装して、ドメインクラスのテキスト表現をカスタマイズします。クラスを使用して、それらを適切なクラスまたはプロパティに割り当てますTypeConverterAttribute

データをグローバル化するPropertyGridために、プロパティ記述子をチェーン化することができます(グローバル化されたプロパティグリッドも参照)。

于 2012-08-13T17:58:14.177 に答える