c# - 修改 PropertyGrid 和 TypeConverterAttribute 的默认行为

标签 c# winforms propertygrid

我正在使用属性网格来编辑项目集合等: alt text

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

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

所以它看起来像这样:

alt text

更新1:将 ProductIds 设为 IList 属性而不是 int[ ] 现在这样做:

alt text

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

UPDATE2:将 ProductIds 设为自定义类,例如

 MyWrappedCollection : IEnumerable<int>

现在看起来像这样:

alt text

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

最佳答案

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

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

关于c# - 修改 PropertyGrid 和 TypeConverterAttribute 的默认行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4677480/

相关文章:

c# - 如何获取 Windows session 列表?

c# - 这两种格式字符串的结果有什么区别吗?

c# - 从不同的类绘制到 Windows 窗体中的图片框

c# - 如何在运行时更改 DisplayNameAttribute 以在属性网格 C# 中使用

c# - 如何使用 linq 或 lambda 表达式连接两个列表

c# - ADO.NET - 更新多个数据表

.net - VB.NET中的FormCollection

c# - 使用 c# 删除延迟时间 : System. Threading.Thread.Sleep(包含代码)

c# - 如何使属性网格将某些值显示为只读? C# 网络

c# - 无法加载文件或程序集 'WPG, PublicKeyToken=null' 或其依赖项之一