【问题标题】:Displaying Object Description within a PropertyGrid在 PropertyGrid 中显示对象描述
【发布时间】:2011-08-04 17:18:06
【问题描述】:

当用户选择它们时,我希望在属性网格中显示一些对象。我知道可以在每个对象类中设置属性描述,但是我要求同一对象的不同实例之间的描述不同。

有没有一种方法可以在运行时为整个对象设置描述,无论在属性网格中选择什么属性,它都会显示?

例如,如果我有以下课程

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 对象特别相关,所以我希望能够设置此描述,不仅基于选择的对象类型,而且基于该对象的特定实例。这可能吗?

【问题讨论】:

    标签: c# winforms propertygrid


    【解决方案1】:

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

    更多关于这个接口的教程可以在herehere找到。

    【讨论】:

    • 链接现在重定向到 msdn 杂志。请更新它们
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2013-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多