运行时的集合编辑器

时间:2008-10-03 03:00:03

标签: .net propertygrid collectioneditor

我正在使用属性网格编写名称/值对的应用程序。 我的类文件中的一些属性是ListDictionary集合。在那儿 我可以在属性声明中应用的Editor属性 集合编辑器在运行时工作?如果没有,是否可以继承 ComponentModel.Design.CollectionEditor在运行时使用?我需要能够添加, 删除和编辑集合值。 非常感谢, 特里

2 个答案:

答案 0 :(得分:3)

来自codeproject文章[http://www.codeproject.com/KB/cs/dzcollectioneditor.aspx][1]

  

有三个要求a   收集应该满足   成功坚持了   CollectionEditor:

     
      
  1. 首先,集合必须实现IList接口   (继承自   System.Collections.CollectionBase是   在大多数情况下,最好的选择)。
  2.   
  3. 其次,它必须具有Indexer(VB.NET中的Item)属性。的类型   这个属性是由   CollectionEditor来确定   默认的实例类型   将添加到该集合。

         

    为了更好地理解其工作原理,请查看GetItemType()   的功能   CustomCollectionEditorForm:

         

    受保护的虚拟类型GetItemType(IList coll)     {         PropertyInfo pi = coll.GetType()。GetProperty(“Item”,                                                new Type [] {typeof(int)});         返回pi.PropertyType     }

  4.   
  5. 第三,集合类必须实现以下一个或两个   方法:添加和AddRange。虽然   IList接口有一个Add成员和   CollectionBase实现了IList,你   仍然要实现一个Add方法   对于你的收藏,鉴于此   CollectionBase声明了一个显式的   IList的成员实现   添加会员。设计师序列化   根据什么收集   你已经实施的方法。如果你   已经实现了两者,AddRange是   优选的。

  6.   

在本文中,您将找到在属性网格上实现集合所需的一切

答案 1 :(得分:1)

我认为这篇文章解释了您的需求:How to Edit and Persist Collections with CollectionEditor