可以在Vista/Win7中使用XP样式吗?如果是,是否可以对单个控件执行此操作。
我知道我可以使用SetWindowTheme()一次关闭一个控件的视觉样式。我知道可以通过移除EnableVisualStyles调用来关闭整个win forms应用程序的视觉样式。
我这样问的原因是因为在应用程序中,这会被用到,一个处于错误状态的控件,它的背景颜色变为红色。当应用程序在Vista/Win7下运行时,这对ComboBoxes不起作用。更改背景颜色只会更改下拉列表,而不会更改实际控件。
我还研究过让BackColor更改组合框的颜色,就像在XP中那样,当视觉样式关闭时,我也没有找到轻松做到这一点的方法。
是的,这在WPF中很容易解决。/cry。:)
发布于 2010-06-09 03:50:53
好吧,你已经知道怎么做了。
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
class MyComboBox : ComboBox {
protected override void OnHandleCreated(EventArgs e) {
base.OnHandleCreated(e);
SetWindowTheme(this.Handle, "", "");
}
[DllImport("uxtheme.dll")]
private static extern int SetWindowTheme(IntPtr hWnd, string appname, string idlist);
}无论你做什么,对于一个习惯于看到她的UI设计开启了视觉样式的用户来说,这看起来很明显。勾选出一个有视力障碍的人,这可能会让你在美国被起诉。Windows窗体已经有一种非常好的方式来指示错误,ErrorProvider就是为此而设计的。
https://stackoverflow.com/questions/3000187
复制相似问题