2011-03-10 2 views
0

DevExpress.XtraEditors 컨텍스트에서이 문제를 다루고 있지만 WinForms 컨트롤에 테마가 사용되는 다른 상황에도 적용될 수 있습니다.테마 WinForms 컨트롤의 테마 기반 속성 값을 어떻게 찾습니까? DevExpress 또는 WinForms 일반적으로

기본적으로 테마 컨트롤의 속성 설정 모음은 무엇입니까? 테마 정의를 살펴볼 방법이 있습니까? 또한이 설정을 동적으로 볼 수 있습니까 (실행 중에 추출되지 않은 Appearance.BackColor를 인쇄하는 것과 마찬가지로).

답변

1

당신이 찾고있는 것이 확실하지 않지만, 컨트롤 (또는 컨트롤 Type의) '모양'속성을 모두 찾으려면 TypeDescriptor.GetProperties 메서드를 사용할 수 있습니다. 이 메서드는 CategoryAttribute.Appearance 속성을 사용하여 속성을 선택할 수있는 PropertyDescriptorCollection을 반환합니다.

당신은 컨트롤의 인스턴스에이 방법을 사용할 수 있습니다 :

PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(myButtonInstance); 

또는 제어 Type에 :

PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(typeof(Button)); 

을하지만 일단 PropertyDescriptorCollection 당신의 존재를 테스트 할 수 있습니다 얻을 CategoryAttribute.Appearance (이 속성은 컨트롤의 '모양'섹션에 나타납니다. Browsable == true로 가정)

foreach (PropertyDescriptor property in properties) { 
    if (property.Attributes.Contains(CategoryAttribute.Appearance)) { 
     Console.WriteLine("{0} - {1}", property.Name, property.Description); 
     // Do whatever... 
    } 
}