Можете ли вы отключить визуальные стили / темы только для одного элемента управления Windows?
Мое приложение Windows Forms использует следующую стандартную строку кода, чтобы визуальные стили (темы) были включены для всего приложения...
Application.EnableVisualStyles();
... который работает отлично, все элементы управления имеют тематический вид вместо плоского серого линкора, который вы могли бы получить в противном случае. Но мне нужно отключить визуальные стили только для одного экземпляра элемента управления. Я не могу удалить вышеуказанную строку, потому что тогда я потеряю их из всех элементов управления. Можно ли удалить их из одного контрольного экземпляра?
К вашему сведению: в таком случае я хочу удалить их из экземпляра DateTimePicker, поэтому, если общий ответ отрицательный, за исключением DateTimePicker, это будет достаточно. Я счастлив использовать платформу, если решение включает в себя игру с контролем на самом низком уровне.
1 ответ
Похоже, вы можете использовать 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, "", "");