【问题标题】:Change value for property item in PropertyGrid更改 PropertyGrid 中属性项的值
【发布时间】:2012-08-13 16:59:45
【问题描述】:

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

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

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

【问题讨论】:

  • 如果您使用 PaintValue 方法,我认为您的图标旁边仍然会出现“(集合)”,但不确定。

标签: c# winforms propertygrid


【解决方案1】:

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


** 更新 **

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

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

要全球化PropertyGrid 数据,可以将属性描述符链接在一起(另请参阅Globalized property grid)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    相关资源
    最近更新 更多