2011-08-04 22 views
1

私は、ユーザーが選択したときにプロパティグリッド内に表示したい多くのオブジェクトを表示します。プロパティの説明は各オブジェクトクラス内で設定できますが、同じオブジェクトの異なるインスタンス間では説明が異なることが必要です。PropertyGrid内にオブジェクトの説明を表示

プロパティグリッド内で選択されているプロパティに関係なく、実行時にオブジェクト全体の説明を設定する方法はありますか?例えば

、私は次のクラスに

public class Person 
{ 
    public String Name { get; set; } 
    public String Age { get; set; } 

    public Person(String n, int a) 
    { 
     this.Name = n; 
     this.age = a; 
    } 

    public Person() 
    { 

    } 
} 

を持っていたし、私は次のように

Person Frank = new Person(Frank, 22); 

をPersonオブジェクトを作成したので、

のようなプロパティグリッドでそのオブジェクトを表示した場合
propertyGrid1.SelectedObject = Frank; 

私は、オブジェクト全体の説明を提供する機能を望みますPersonクラスの名前と年齢属性。また、私は特にフランクオブジェクトに関連する記述をしたいので、私はこのタイプのオブジェクトを選択するだけでなく、そのオブジェクトの特定のインスタンスに基づいてこの記述を設定できるようにしたいと思います。これは可能ですか?

答えて

1

PropertyGridには、オブジェクトではなくプロパティの説明のみが表示されます。つまり、オブジェクトにICustomTypeDescriptorを実装し、GetPropertiesメソッドをオーバーライドすることができます。そこにカスタムDescriptionAttributeを注入することができます。

このインターフェイスのチュートリアルは、herehereです。

+0

リンクは現在msdn雑誌にリダイレクトされています。それらを更新してください – Kira

0

正解としてCodeNaked。 PropertyGridは、インスタンス全体ではなく、現在選択されているプロパティの説明のみを表示するのが理にかなっています。どのようなメリットがありますか?ターゲットインスタンスに基づいてメッセージを実際に表示する必要がある場合は、グリッドの上または下にラベルを作成しないでください。そのコンテンツは、自分のカスタム属性、または独自のDescriptionProviderに基づいている可能性があります。

関連する問題