2011-08-04 72 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類的名稱和年齡屬性。而且,因爲我希望描述特別適用於Frank對象,所以我希望能夠根據選擇哪種對象類型來設置此描述,而不是基於該對象的特定實例。這可能嗎?

回答

1

PropertyGrid只顯示屬性的描述,而不是對象。也就是說,你可以在你的對象上實現ICustomTypeDescriptor並覆蓋GetProperties方法。在那裏你可以注入一個自定義DescriptionAttribute

可以在此界面找到更長的教程herehere

+0

鏈接現在重定向到msdn雜誌。請更新它們 – Kira

0

CodeNaked爲正確答案。 PropertyGrid只顯示當前選中屬性的描述,而不是整個實例。有什麼好處?如果您確實需要顯示基於目標實例的消息,爲什麼不在網格的頂部或底部創建標籤?它的內容可能基於您的自定義屬性或您自己的DescriptionProvider ...

相關問題