1

我为我的集合类派生了一个集合编辑器。但是集合编辑器中的添加和删除按钮未启用,因此我无法通过设计器添加或删除集合中的实例。

这是我使用的代码,

[EditorAttribute(typeof(MyCollectionEditor), typeof(UITypeEditor))]
public MyCollection : IDisposable, ICollection
{  
    List<MyClass> list= new List<MyClass>();

    public Add(MyClass myclass)
    {

    }

    ......


 }


 public class MyCollectionEditor : CollectionEditor
 {
    public MyCollectionEditor ()
       : base(typeof(MyCollection))
    {
    }


    protected override Type CreateCollectionItemType()
    {
        return typeof(MyCollection);
    }

    public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
    {
        return base.EditValue(context, provider, value);
    }
 }

谁能告诉我,如何在收藏编辑器中启用添加、删除按钮并使其适用于我的收藏?

问候,

4

1 回答 1

1

尝试这个:

 public class MyCollectionEditor : CollectionEditor
    {
        public MyCollectionEditor()
            : base(typeof(MyCollection))
        {
        }

        protected override CollectionForm CreateCollectionForm()
        {
            CollectionForm form = base.CreateCollectionForm();
            Type type = form.GetType();
            PropertyInfo propertyInfo = type.GetProperty("CollectionEditable", BindingFlags.Instance | BindingFlags.NonPublic);
            propertyInfo.SetValue(form, true);
            return form;
        }

        protected override Type CreateCollectionItemType()
        {
            return typeof(MyCollection);
        }

        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
        {
            return base.EditValue(context, provider, value);
        }
    }

这应该启用“添加”和“删除”按钮。

于 2017-05-02T11:14:53.537 回答