最近遇到一个项目需要使用的propertyGrid来让用户自定义属性,在遇到对集合进行操作的的时候遇到几个问题:
1.在集合编辑器上,属性设计区域下面的没有属性描述区域,导致有的用户无法知道这个属性有啥用,如下图
2.集合编辑器只能指定同一个类型,但有个需求是需要在一个集合里添加基于同一个基类的不同拓展的多个类型
3.需要限制集合编辑器Items的数量,不能超过指定数量.
先处理第一个问题,老规矩,遇到问题的时候先google下,结果没找到我需要的,只能老老实实去看看源码希望能有点收货,运气还好,反编译了下CollectionEditor,发现其实
是有描述区域的,只是不知道微软咋想的,默认是不显示的,但是可以通过反射使其显示,具体代码直接贴上
1 public class ExtendCollectionEditor : CollectionEditor 2 { 3 public ExtendCollectionEditor(Type type) : base(type) 4 { 5 } 6 protected override CollectionForm CreateCollectionForm() 7 { 8 CollectionForm frm = base.CreateCollectionForm(); 9 FieldInfo fileinfo = frm.GetType().GetField("propertyBrowser", BindingFlags.NonPublic | BindingFlags.Instance); 10 if (fileinfo != null) 11 {