2011-08-04 74 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 ...

相关问题