我希望在属性网格中显示许多对象,因为它们是由用户选择的。我知道可以在每个对象类中设置属性描述,但是我要求描述在同一对象的不同实例之间有所不同。
有没有办法可以在运行时设置整个对象的描述,无论属性网格中选择了什么属性,都会显示?
例如,如果我有以下课程
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对象,所以我希望能够根据所选对象的类型,以及该对象的特定实例来设置此描述。这可能吗?
答案 0 :(得分:1)
PropertyGrid仅显示属性的描述,而不显示对象。也就是说,您可以在对象上实现ICustomTypeDescriptor并覆盖GetProperties方法。在那里,您可以注入自定义DescriptionAttribute。
答案 1 :(得分:0)
CodeNaked是正确的答案。 PropertyGrid只显示当前所选属性的描述,而不是整个实例。有什么好处?如果您确实需要根据目标实例显示消息,为什么不在网格的顶部或底部创建标签?它的内容可能基于你的自定义属性或你自己的DescriptionProvider ......