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