2

我正在使用属性网格来编辑项目集合等: 替代文字

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

我正在使用表单来编辑此字段,该字段已连接,但我想删除用户使用“扩展器”编辑数组的能力

所以它看起来像这样:

替代文字

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

替代文字

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

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

 MyWrappedCollection : IEnumerable<int>

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

替代文字

当然,它仍然显示 [+] 但它不会扩展为任何内容(即当您单击它时会消失)

4

3 回答 3

3

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

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

于 2011-01-14T10:45:43.260 回答
0

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

顺便说一句,您使用数组的任何具体原因?

于 2011-01-13T06:54:13.593 回答
0

您需要实现和应用 UITypeEditor。请参阅如何:实现 UI 类型编辑器

覆盖UITypeEditor 的GetEditStyle以返回Modal

于 2011-01-13T07:32:21.247 回答