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

Application.EnableVisualStyles();

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

FYI:碰巧我想,所以如果一般的答案是否定的除外的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, "", "");

原始CodeProject上文章

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top