2017-05-02 65 views
0

我已經爲我的收藏類派生了一個收藏編輯器。但集合編輯器中的添加和刪除按鈕未啓用,因此我無法通過設計器添加或刪除集合中的實例。如何啓用收藏編輯器的添加和刪除按鈕

這裏是代碼我都用過,

[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); 
    } 
} 

任何人都可以請讓我知道,如何啓用添加在集合編輯器刪除按鈕,使其爲我收集工作?

問候,

回答

0

試試這個:

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); 
     } 
    } 

這將使 「添加」 和 「刪除」 按鈕。

+0

type.GetProperty(「CollectionEditable」。這裏CustomEditable是什麼? – Amal

相關問題