2012-08-13 157 views
9

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

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

Example propertygrid.

编辑:对于什么是值得的,我知道我可以重写自UITypeEditor的PaintValue方法,并提供一个图标,我最终可能会,如果我解决不了这个问题,这样做,但我仍然想知道是否以及如何改变“(收集)”文本。

+0

我认为如果您使用PaintValue方法,但仍然不确定,您仍然会在图标旁边出现“(Collection)”。 – 2012-08-13 17:56:38

回答

7

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


** UPDATE **

提供文章的汇总版本(在链路不可用的情况下),参与了一个定制显示和集合内容描述的步骤PropertyGrid如下:

  1. 通过从抽象基类PropertyDescriptor派生类来提供自定义属性描述符。
  2. 重写抽象方法和属性。为DisplayName和描述属性提供适当的实现。
  3. 让您的集合类实现ICustomTypeDescriptor接口。
  4. 通过GetProperties()方法返回自定义属性描述符的集合。
  5. 可选使用TypeConverter由.NET提供的派生对象,或实现自己的类来自定义您的域类的文本表示。通过使用TypeConverterAttribute类将它们分配给相应的类或属性。

全球化的PropertyGrid数据,属性描述符可以被链接到一起(参见Globalized property grid)。

+1

^这就是答案! – 2012-08-13 18:00:08

+1

哇!这工作!谢谢! – kevin628 2012-08-13 18:06:35