2017-05-02 2 views
0

필자는 자신의 컬렉션 클래스에 대한 컬렉션 편집기를 파생 시켰습니다. 컬렉션 편집기의 추가 및 삭제 버튼이 활성화되어 있지 않아 디자이너를 통해 컬렉션의 인스턴스를 추가하거나 삭제할 수 없습니다.collectioneditor의 추가 및 삭제 버튼을 활성화하는 방법

다음

코드 내가 사용하고있다,

[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