你能为一个窗口控件关闭视觉样式/主题吗?

Phi*_*ght 0 themes uxtheme datetimepicker winforms

我的Windows窗体应用程序使用以下标准代码行,以便为整个应用程序启用视觉样式(主题)...

Application.EnableVisualStyles();
Run Code Online (Sandbox Code Playgroud)

...工作得很好,所有的控制都有主题外观,而不是平坦的战舰灰色,否则你会得到.但我需要关闭一个控件实例的视觉样式.我不能删除上面的行,因为那样我将失去所有控件的主题.是否可以从单个控件实例中删除主题?

仅供参考:当我发生这种情况时,我想从DateTimePicker实例中删除主题,所以如果除了DateTimePicker之外一般答案是否定的那么那就足够了.如果解决方案涉及在最低级别玩控件,我很乐意使用平台调用.

Dav*_*own 5

看起来你可以在控件上使用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, "", "");
Run Code Online (Sandbox Code Playgroud)

原始CodeProject文章