修改PropertyGrid和TypeConverterAttribute的默认行为

时间:2011-01-13 06:41:50

标签: c# winforms propertygrid

我正在使用属性网格来编辑项目集合,其中包括: alt text

集合的默认行为提供了一个+按钮来编辑数组的每个成员。

我正在使用表单编辑此字段,该字段已经连线,但我想删除用户使用'expandder'编辑数组的功能

所以它看起来像这样:

alt text

UPDATE1:使ProductIds成为IList属性而不是int [] 现在这样做:

alt text

-----------------!

UPDATE2:使ProductIds成为自定义类,例如

 MyWrappedCollection : IEnumerable<int>

所以它现在看起来像这样:

alt text

当然,它仍会显示[+]但它不会扩展到任何东西(即点击它时消失)

3 个答案:

答案 0 :(得分:3)

控制属性是否可扩展的属性是TypeConverter。 ExpandableObjectConverter是一个内置类,它提供了扩展属性并查看它自己的能力。我猜测默认情况下,数组和集合使用此转换器来显示其中的内容。

您可以编写自己的TypeConverter,它不会从ExpandableObjectConverter继承并将其设置为属性上的属性以删除+。

答案 1 :(得分:0)

默认情况下,它使用[...]方法。可能是您可以使用集合(例如List)而不是数组。

顺便问一下,你使用数组的具体原因是什么?

答案 2 :(得分:0)

您需要实现并应用UITypeEdtitor。见How to: Implement a UI Type Editor

覆盖UITypeEditor的 GetEditStyle 以返回模态