문제

내 Windows Forms Application은 다음 표준 코드 라인을 사용하여 전체 응용 프로그램에 시각적 스타일 (테마)이 활성화되도록합니다 ...

Application.EnableVisualStyles();

... 잘 작동합니다. 모든 컨트롤에는 평평한 전함 회색 대신 테마 모양이 있습니다. 그러나 단일 컨트롤 인스턴스에 대해서는 시각적 스타일을 끌어야합니다. 위의 줄을 제거 할 수 없습니다. 그러면 모든 컨트롤에서 테마를 잃어 버릴 수 있기 때문입니다. 단일 제어 인스턴스에서 테마를 제거 할 수 있습니까?

참고 : 발생하기 때문에 DateTimePicker 인스턴스에서 테마를 제거하고 싶습니다. 따라서 일반적인 답변이 DateTimePicker를 제외하고는 없으면 충분할 것입니다. 솔루션이 가장 낮은 수준에서 컨트롤을 사용하는 경우 플랫폼 호출을 사용하게되어 기쁩니다.

도움이 되었습니까?

해결책

컨트롤에서 setwindowtheme을 사용할 수있는 것 같습니다.

[DllImport("uxtheme", ExactSpelling = true, CharSet = CharSet.Unicode)]
public extern static Int32 SetWindowTheme (IntPtr hWnd, 
              String textSubAppName, String textSubIdList);

yourControl.FlatStyle = FlatStyle.System;
SetWindowTheme(yourControl.Handle, "", "");

원본 코드 리젝트 기사

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