문제

속성 그리드를 사용하여 이름/값 쌍을 편집하기 위해 응용 프로그램을 진행하고 있습니다. 내 클래스 파일의 속성 중 일부는 ListDictionary Collections입니다. 런타임에 컬렉션 편집기가 작동하게 할 속성 선언에서 신청할 수있는 편집기 속성이 있습니까? 그렇지 않은 경우 런타임에 사용하기 위해 ComponentModel.Design.collectionEditor에서 상속 될 수 있습니까? 수집 값을 추가, 삭제 및 편집 할 수 있어야합니다. 고마워요, 테리

도움이 되었습니까?

해결책

이 기사는 필요한 내용을 설명한다고 생각합니다. CollectionEditor로 수집을 편집하고 지속하는 방법

다른 팁

Codeproject 기사에서 [http://www.codeproject.com/kb/cs/dzcollectioneditor.aspx뉴]]]

CollectionEditor와 성공적으로 지속되기 위해 컬렉션이 충족 해야하는 세 가지 요구 사항이 있습니다.

  1. 먼저, 컬렉션은 ILIST 인터페이스를 구현해야합니다 (System.Collections.CollectionBase에서 상속하는 것이 대부분의 경우 최상의 옵션입니다).
  2. 둘째, 인덱서 (VB.NET의 항목) 속성이 있어야합니다. 이 속성의 유형은 CollectionEditor가 컬렉션에 추가 할 인스턴스의 기본 유형을 결정하는 데 사용됩니다.

    이것이 어떻게 작동하는지 더 잘 이해하려면 customCollectionEditorform의 getItemType () 함수를 살펴보십시오.

    보호 된 가상 유형 getItemType (ilist coll) {propertyInfo pi = coll.getType (). getProperty ( "항목", new Type [] {typeof (int)}); pi.propertytype 반환} 반환}

  3. 셋째, 컬렉션 클래스는 다음 방법 중 하나 또는 둘 다를 구현해야합니다 : Add 및 AddRange. ILIST Interface에는 ADD 멤버 및 CollectionBase Base가 ILIST를 구현하지만 CollectionBase가 ILIST의 ADD 멤버의 명시 적 멤버 구현을 선언 한 경우에도 여전히 컬렉션에 대한 추가 방법을 구현해야합니다. 디자이너는 구현 한 방법에 따라 컬렉션을 직렬화합니다. 두 가지를 모두 구현 한 경우 AddRange가 선호됩니다.

이 기사에서는 속성 그리드에서 컬렉션을 구현하는 데 필요한 모든 것을 찾을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top