代码之家  ›  专栏  ›  技术社区  ›  Tony

是否可以在Vista/Win7中使用xp视觉样式?

  •  1
  • Tony  · 技术社区  · 15 年前

    可以在Vista/Win7中使用xp样式吗?如果是,是否可以对单个控件执行此操作。

    我知道我可以使用setWindowTheme()一次关闭一个控件的视觉样式。我知道通过删除EnableVisualStyles调用可以关闭整个Win窗体应用程序的视觉样式。

    我问的原因是,在应用程序中,这将被一个处于错误状态的控件使用,它的背景色变为红色。当应用程序在Vista/Win7下运行时,这对组合框不起作用。更改背景色只会更改下拉列表,而不是实际控件。

    我也研究过让backcolor改变组合框的颜色,就像在xp中和关闭视觉样式时一样,但是也没有找到任何方法可以轻松做到这一点。

    是的,这在WPF中很容易解决。哭。:)

    1 回复  |  直到 15 年前
        1
  •  3
  •   Hans Passant    15 年前

    你已经知道怎么做了。

    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);
    }
    

    不管你做什么,对于一个习惯于看到她的用户界面设计打开了视觉样式的用户来说,它都会显得很明显。勾选一个有视觉障碍的,在美国可能会让你被起诉的东西。Windows窗体已经有一个很好的方法来表示错误,错误提供者就是这样设计的。