문제

나는 당신이 iCustomtypedescriptor, typedescriptionprovider, typeconverter 및 uitypeeditor를 사용하여 PropertyGrid가 객체와의 인터페이스를 표시하는 방식을 변경하는 방법에 대한 전반적인 이해를 얻으려고 노력하고 있습니다.

누군가 이것이 옳은지 또는 내가 주요 개념이나 포인트를 놓쳤는 지 말해 줄 수 있습니까? 나는 당신이 각 수업을 사용하는 이유와시기를 이해하려고 노력하고 있습니다.

iCustomtypedescriptor

  • 클래스 에서이 인터페이스를 구현하면 Cotaly는 클래스의 기본 속성을 무시하고이를 iCustomtypedescriptor.getProperties ()에 의해 반환 된 속성 디스크립터로 대체합니다.

typedescriptionprovider

  • 클래스의 기존 속성을 확장하는 데 사용
  • typedescriptionprovider가 typedescriptionprovider 속성을 통해 클래스에 추가됩니다.
  • typedescriptionprovider의 gettypedescriptor () 메소드는 iCustomtypedescriptor를 반환합니다. 추가 유형의 기존 속성에.
  • PropertyGrid는 반사를 통해 발견 된 클래스의 속성과 typedescriptionprovider를 통해 클래스에 추가 된 속성을 모두 보여줍니다.

타이프 콘버터

  • 유형간에 변환됩니다
  • 속성 그리드에 표시/편집 할 수있는 복잡한 유형과 원시 유형을 변환하는 데 사용되는 PropetyGrid를 사용하는 측면에서.
  • typeConverter의 getStandard 값 방법을 사용하여 PropertyGrid의 가능한 값 목록을 표시 할 수도 있습니다.

uitypeeditor

  • 복잡한 유형의 속성을 조작하기위한 사용자 정의 편집기를 정의합니다.
  • 속성을 통해 속성과 관련이 있습니다.

따라서 ICUSTOMTYPEDESCRIPTOR TYPEDESCRIPTION 제공자는 객체의 전체 속성을 추가/변경/교체하는 데 사용됩니다. TypEconverter 및 UityPeeditor는 개별 특성에 적용되며 해당 특정 특성이 어떻게 인터페이스되는지 제어합니다.

도움이 되었습니까?

해결책

조정 :

  • TypeDescriptionProvider

    • 아직 대체 메타 데이터 (확장되지 않음)
    • 추가 할 수 있습니다 TypeDescriptor.AddProvider
    • 인스턴스 별뿐만 아니라 유형 별 적용 할 수 있으므로 구현할 필요없이 목록에 신청할 수 있습니다. ITypedList
  • TypeConverter

    • ~을 위한 PropertyGrid, 이것은 또한 메타 데이터를 얻는 데 사용되는 메커니즘입니다. 주목하십시오 ExpandableObjectConverter 단순히 대표합니다 TypeDescriptor.GetProperties, 그러나 이것이 항상 그런 것은 아닙니다
    • 또한 변경 사항이없는 불변의 물체 (예 : 스트러크) 재창조를 담당합니다.
  • UITypeEditor

    • 미리보기 상자를 그림으로 칠할 책임이 있습니다 PropertyGrid

추가의:

  • IExtenderProvider - 추가 속성; 이것은 당신이 혼란스러워했던 것일 수 있습니다 TypeDescriptionProvider
  • ITypedList - 광범위하게 쌍둥이 ICustomTypeDescriptor, 그러나 목록을 위해; 사용하면 피할 수 있습니다 TypeDescriptionProvider 및 객체가 아닌 인덱서 IList, 즉 public T this[int index] {get;}
  • IListSource - 데이터 소스와 데이터 사이의 간접성을 제공합니다. 예를 들어, a DataTable 구현 IListSource, 반환 DefaultView 요청시
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top