Можете ли вы отключить визуальные стили / темы только для одного элемента управления Windows? - PullRequest
0 голосов
/ 13 февраля 2009

В приложении Windows Forms используется следующая стандартная строка кода, чтобы визуальные стили (темы) были включены для всего приложения ...

Application.EnableVisualStyles();

... что работает отлично, все элементы управления имеют тематический вид вместо плоского серого линкора, который вы получили бы в противном случае. Но мне нужно отключить визуальные стили только для одного экземпляра элемента управления. Я не могу удалить вышеприведенную строку, потому что тогда я потеряю их из всех элементов управления. Можно ли удалить их из одного контрольного экземпляра?

К вашему сведению: в таком случае я хочу удалить их из экземпляра DateTimePicker, поэтому, если общий ответ отрицательный, за исключением DateTimePicker, это будет достаточно. Я счастлив использовать платформу, если решение включает в себя игру с управлением на самом низком уровне.

1 Ответ

5 голосов
/ 13 февраля 2009

Похоже, вы можете использовать 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, "", "");

Оригинальный артикул CodeProject

...