在属性网格,.net,winforms中编辑自定义只读集合的​​问题

时间:2010-02-19 16:54:50

标签: c# .net vb.net propertygrid collectioneditor

我有一个自定义集合,让我们说COL,派生自ObjectModel.Collection。

我有自己的集合编辑器,当COL类型的属性启用了读取和写入时,它可以正常工作。 但是,如果我将属性更改为ReadOnly,则打开的编辑器按钮将停止显示在属性网格中。

作为测试,我使用CollectionEditor覆盖我的自定义编辑器,并且工作正常。

所以,我的问题是,什么检查是属性网格制作,CollectionEditor通过但我的收藏编辑器失败了?

在UITypeEditor中没有太多要覆盖,所以我担心有一些关于CollectionEditor的硬编码。

干杯。

ETA:

我已经回答了以下问题。

2 个答案:

答案 0 :(得分:0)

我发现了为什么它没有出现,而且它似乎是PropertyGrid中的一个错误。 如果EditStyle设置为Modal,则会出现该按钮,但如果将其设置为DropDown则不会出现。

有人会认为这些款式只适用于...,好吧,风格?

查看反射器时,会出现问题,因为只有在样式设置为模态时才会进行额外的只读属性检查(例如检查它是否为引用类型 - 并启用按钮)。嗯,好的。

答案 1 :(得分:0)

我认为您在自己的答案中描述的行为不是错误,而是设计,坦率地说这是非常合乎逻辑的。查看下拉列表编辑器:它们为用户提供选择,因此结果是属性的新值(请参阅ColorEditor,AnchorEditor,DockEditor,CursorEditor,...)。因此,财产不得只读。模态编辑器更多的是编辑值(通常是引用类型),因此即使属性是只读的也可以使用。当然,这个也可以用来选择一个新值(比如FileNameEditor)。

所以答案可能是“看看你的UI设计”。您确定应该使用下拉菜单编辑引用类型的内容吗?