Winforms 能否仅为单个windows控件关闭视觉样式/主题化?

Winforms 能否仅为单个windows控件关闭视觉样式/主题化?,winforms,themes,datetimepicker,uxtheme,Winforms,Themes,Datetimepicker,Uxtheme,我的Windows窗体应用程序使用以下标准代码行,以便为整个应用程序启用视觉样式(主题化) Application.EnableVisualStyles(); …这一切都很好,所有的控件都有一个主题化的外观,而不是平淡的战舰灰色,否则你会得到。但是我只需要关闭单个控件实例的视觉样式。我无法删除上面的行,因为这样我将失去所有控件的主题。是否可以从单个控件实例中删除主题化 仅供参考:碰巧我想从DateTimePicker实例中删除主题,所以如果除了DateTimePicker之外,一般的答案是否定

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

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, "", "");

看起来您可以在控件上使用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, "", "");