CollectionEditor产生"对象与目标类型不匹配".for System.Drawing.Point

smw*_*dia 8 c# collectioneditor

我有一个自定义控件具有类型的属性Collection<System.Drawing.Point>.当我使用CollectionEditor编辑此属性,则CollectionEditor窗口显示"Object does not match target type.""X""Y"性能.但如果我System.Drawing.PointF改用它,那就没有失败.

谁能解释为什么会出现这种差异?

小智 3

Point 和 PointF 之间的区别确实在于 PointConverter。为什么这会导致问题是一个很长的故事,但最终归结为以下几点:

实现简单System.ComponentModel.ICustomTypeDescriptor.GetPropertyOwner(PropertyDescriptor)System.ComponentModel.Design.CollectionEditor .CollectionEditorCollectionForm.SelectionWrapper返回this.

根据前面提到的接口方法的MSDN页面ICustomTypeDescriptor,一个实现应该

返回一个对象,该对象包含由指定属性描述符描述的属性。

如果我理解正确的话,在这种情况下,实现与文档相矛盾。

这是基于我自己的一些研究,所以不要想当然。我在 Microsoft Connect 上发布了有关此问题的报告,希望我们几天后就能确定。收到答复后我会报告。