在PropertyGrid中显示对象描述

时间:2011-08-04 17:18:07

标签: c# winforms 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对象

Person Frank = new Person(Frank, 22);

并在属性网格中显示该对象

propertyGrid1.SelectedObject = Frank;

我希望能够提供整个对象的描述,而不是Person类的名称和年龄属性。而且,因为我希望描述特别适用于Frank对象,所以我希望能够根据所选对象的类型,以及该对象的特定实例来设置此描述。这可能吗?

2 个答案:

答案 0 :(得分:1)

PropertyGrid仅显示属性的描述,而不显示对象。也就是说,您可以在对象上实现ICustomTypeDescriptor并覆盖GetProperties方法。在那里,您可以注入自定义DescriptionAttribute

可以找到关于此界面的更长教程herehere

答案 1 :(得分:0)

CodeNaked是正确的答案。 PropertyGrid只显示当前所选属性的描述,而不是整个实例。有什么好处?如果您确实需要根据目标实例显示消息,为什么不在网格的顶部或底部创建标签?它的内容可能基于你的自定义属性或你自己的DescriptionProvider ......