更改PropertyGrid中属性项的值

时间:2012-08-13 16:59:45

标签: c# winforms propertygrid

在下图中,“MyCars”是一个集合。如果对象的属性是一个集合,那么在PropertyGrid中,如果选中该项,则该值显示为字符串“(Collection)”,右侧有一个按钮。

是否可以更改“(收藏)”值?如果是这样,怎么样?我问的原因是因为我已经为我的程序中出现在PropertyGrid中的对象实现了一个自定义UITypeEditor。到目前为止,右侧的按钮出现,但文本值与属性的显示名称相同。我想在那里出现一个不同的字符串。

Example propertygrid.

编辑:对于它的价值,我知道我可以覆盖UITypeEditor的PaintValue方法并提供一个图标,如果我无法解决这个问题,我可能最终会做,但我仍然喜欢知道是否以及如何更改“(收藏)”文本。

1 个答案:

答案 0 :(得分:7)

这篇文章Customized display of collection data in a PropertyGrid可能会有所帮助。


** 更新 **

要提供文章的摘要版本(如果链接不可用),在PropertyGrid中自定义集合内容的显示和描述所涉及的步骤如下:

  1. 通过从抽象基类PropertyDescriptor派生类来提供自定义属性描述符。
  2. 覆盖抽象方法和属性。为DisplayName和描述属性提供适当的实现。
  3. 让您的集合类实现ICustomTypeDescriptor接口。
  4. 通过GetProperties()方法返回自定义属性描述符的集合。
  5. (可选)使用.NET提供的TypeConverter派生对象,或实现自己的类来自定义域类的文本表示形式。使用TypeConverterAttribute类将它们分配给适当的类或属性。
  6. 要全局化PropertyGrid数据,可以将属性描述符链接在一起(另请参阅Globalized property grid)。