在PropertyGrid中显示对象描述
本文关键字:对象 描述 显示 PropertyGrid | 更新日期: 2023-09-27 18:04:26
我有一些对象,我希望在用户选择它们时在属性网格中显示它们。我知道属性描述可以在每个对象类中设置,但是我要求同一对象的不同实例之间的描述是不同的。
是否有一种方法,我可以设置整个对象的描述,在运行时显示,无论在属性网格中选择什么属性?
例如,如果我有以下类
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对象,所以我不仅希望能够根据选择的对象类型设置描述,还希望能够根据该对象的特定实例设置描述。这可能吗?
PropertyGrid只显示属性的描述,而不显示对象。也就是说,您可以在对象上实现ICustomTypeDescriptor并覆盖GetProperties方法。在那里你可以注入一个自定义的DescriptionAttribute。
关于这个界面的更长的教程可以在这里和这里找到。
CodeNaked为正确答案。PropertyGrid只显示当前选择的属性的描述,而不是显示整个实例,这是有意义的。这样做有什么好处?如果确实需要根据目标实例显示消息,为什么不在网格的顶部或底部创建一个标签呢?它的内容可以基于您的自定义属性或您自己的DescriptionProvider…