我正在使用属性网格来编辑项目集合等:
集合的默认行为提供了一个 + 按钮来编辑数组的每个成员。
我正在使用表单来编辑此字段,该字段已连接,但我想删除用户使用“扩展器”编辑数组的功能
所以它看起来像这样:
更新1:将 ProductIds 设为 IList 属性而不是 int[ ] 现在这样做:
-----------------!
UPDATE2:将 ProductIds 设为自定义类,例如
MyWrappedCollection : IEnumerable<int>
现在看起来像这样:
当然,它仍然显示 [+],但它不会展开为任何内容(即单击它时消失)
最佳答案
控制属性是否可扩展的属性是 TypeConverter。 ExpandableObjectConverter 是一个内置类,它提供了扩展属性并查看其自身属性的能力。我猜测默认情况下数组和集合使用此转换器来显示其中的内容。
您可以编写自己的 TypeConverter(它不继承自 ExpandableObjectConverter)并将其设置为属性上的属性以删除 +。
关于c# - 修改 PropertyGrid 和 TypeConverterAttribute 的默认行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4677480/