는 사용자 정의 개체는 회색으로, 그리고 확장되지 않습니다클래스를 수정하지 않고 속성 표에서 사용자 지정 개체를 확장 하시겠습니까? 기본적으로
나는 그것이 ExpandableObjectConverter를 사용하여이 확장하는 것이 가능 알고 있지만, 원래 클래스를 확장해야합니다.
원본 클래스를 수정할 수없는 경우 어떻게해야합니까? 속성 그리드 내에 사용자 지정 개체 확장을 처리하는 일반적인 방법이 있습니까?
는 사용자 정의 개체는 회색으로, 그리고 확장되지 않습니다클래스를 수정하지 않고 속성 표에서 사용자 지정 개체를 확장 하시겠습니까? 기본적으로
나는 그것이 ExpandableObjectConverter를 사용하여이 확장하는 것이 가능 알고 있지만, 원래 클래스를 확장해야합니다.
원본 클래스를 수정할 수없는 경우 어떻게해야합니까? 속성 그리드 내에 사용자 지정 개체 확장을 처리하는 일반적인 방법이 있습니까?
런타임시 ExpandableObjectConverter
에 TypeConverterAttribute
을 동적으로 추가 할 수 있습니다 (VB.NET).
Dim attr = New TypeConverterAttribute(GetType(ExpandableObjectConverter))
TypeDescriptor.AddAttributes(GetType(ExtensionDataObject), attr)
확장 할 수있는 유형마다 AddAttribute
이 필요합니다. 유형은 특정 네임 스페이스에있는 모든 경우에, 당신은 그들을 찾을 반사를 사용할 수 있습니다
Dim assm = Assembly.GetExecutingAssembly() ' or some other assembly
For Each t In assm.GetTypes().Where(Function(x) x.Namespace = "InterestingTypes")
TypeDescriptor.AddAttributes(t, attr)
Next
(깨진 구문 강조 죄송합니다 - 내가 사용 했어야 C 번호를!)이 질문으로
아마도 같은 ] (http://stackoverflow.com/questions/3068453/can-you-assign-a-typeconverter-without-a-typeconverterattribute)? – Mark
이것은 아주 좋은 해결 방법입니다! 여전히 형식을 변환기와 수동으로 연결해야하지만 기본 확장 지원을 위해 각 형식 당 한 줄의 코드 만 있습니다. 이 보석을 찾아 주셔서 대단히 감사합니다! 최소한의 재현 가능한 예를 포함하여 무언가를 대답으로 게시 할 수 있습니다. 또는 중복 된 것으로 투표를 마감하십시오 (링크가이 작업의 상위 집합, 즉보다 일반적인 것으로 느껴짐). – Neolisk