在 PropertyGrid 中更改属性项的值

9
在下图中,"MyCars" 是一个集合。如果对象的属性是一个集合,在 PropertyGrid 中,该值会显示为字符串"(Collection)",并在选中该项时出现右侧的按钮。 是否可以更改 "(Collection)" 的值?如果可以,如何更改? 我问这个问题是因为我已经为在我的程序中将出现在 PropertyGrid 中的对象实现了自定义 UITypeEditor。到目前为止,右边的按钮已经出现,但文本值与属性的显示名称相同。我希望出现不同的字符串。
编辑:值得一提的是,我知道可以重写 UITypeEditor 的 PaintValue 方法并提供一个图标来解决此问题,但如果我无法解决此问题,我仍然想知道是否可以更改 "(Collection)" 文本以及如何更改。

我认为如果你使用PaintValue方法,你的图标旁边仍然会有“(Collection)”字样,但我不确定。 - Barry Franklin
1个回答

8
这篇文章《在属性网格中自定义集合数据显示》或许能为您带来帮助。

**更新**

如果链接不可用,以下是个性化显示和描述PropertyGrid中集合内容的步骤:

  1. 通过从抽象基类PropertyDescriptor派生出一个类,提供一个自定义属性描述符。
  2. 覆盖抽象方法和属性。为DisplayNamedescription属性提供适当的实现。
  3. 让你的集合类实现ICustomTypeDescriptor接口。
  4. 通过GetProperties()方法返回一组自定义属性描述符集合。
  5. 可选地使用.NET提供的TypeConverter派生对象,或编写自己的类来自定义域类的文本表示形式。通过TypeConverterAttribute类将其分配给相应的类或属性。

为了全球化PropertyGrid数据,可以将属性描述符链接在一起(也可以参见全球化属性网格)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接