可以在Vista / Win7中使用XP样式吗?如果是,是否可以为单个控件执行此操作。
我知道我可以使用SetWindowTheme()一次关闭一个控件的视觉样式。我知道可以通过删除EnableVisualStyles调用来关闭整个win表单应用程序的视觉样式。
我问的原因是因为在应用程序中,这将被用作错误状态的控件,它的背景颜色变为红色。当应用程序在Vista / Win7下运行时,这对ComboBox不起作用。更改背景颜色仅对下拉列表而不是实际控件进行更改。
我还研究过让BackColor改变组合框的颜色,就像它在XP中一样,当视觉风格关闭但却发现无法轻易做到这一点。
是的,这可以在WPF中轻松解决... / cry。 :)
答案 0 :(得分:3)
嗯,你已经知道该怎么做了。
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 Forms已经有一个非常好的方法来指示错误,ErrorProvider就是为此而设计的。