2010-09-08 75 views
1

我正在使用队列作为属性,并将其显示为属性网格中的集合。唯一的问题是,我无法编辑它内部的任何内容,它只是将它们显示为“对象”,而且所有内容都是只读的。我知道Vector2在propertygrid中工作正常,因为我自己有几个。我一直在Google上搜索,发现了一些关于制作ContainerEditor的信息,但不知道如何为Queue创建一个,因为它不是自定义类。在PropertyGrid中使用队列<T>

我读这个权利,还是寻找错误的东西?

回答

1

您需要编写TypeConverter和UITypeEditor来转换和编辑Queue对象。有关如何去解决它的文章请参见thisthis。这两篇文章都有点过时,但应该是相关的 - 如果有更简单的东西出现了.NET的后期版本,那么我知道它(你可以尝试使用谷歌搜索)。

现在,对于上面的工作,您需要用具有属性的装饰类/类型,如果使用队列,则不可能实现这些属性。我会建议你从队列继承一个虚拟/包装类并应用它的属性。如果有意义的话,你甚至可以在包装类中选择特定的T(例如类MyQueue : Queue<string> { })。改变你的财产类型以使用你的包装类。