0

我正在使用 SetWindowTheme 函数 (uxtheme.dll) 使我的 ListView 看起来像 Windows 7 本机。当我对它进行排序时,我不得不使用 CreateParams 的东西来防止 ListView 闪烁。它起作用了,但是当我使用该 CreateParams 代码时,SetTheme 不再起作用。有没有办法同时使用 Windows 7 原生主题和 CreateParams?

protected override CreateParams CreateParams
{
    get
    {
        CreateParams cp = base.CreateParams;
        cp.ExStyle |= 0x02000000;  // Turn on WS_EX_COMPOSITED
        return cp;
    }
}


[DllImport("uxtheme.dll", ExactSpelling = true, CharSet = CharSet.Unicode)]
    private static extern int SetWindowTheme(IntPtr hwnd, string pszSubAppName, string pszSubIdList);

public MainWindow()
{
    InitializeComponent();
    SetWindowTheme(listView1.Handle, "Explorer", null);
}

谢谢

编辑: 我通过在我的自定义 ListView 的 OnHandleCreated void 中添加一个 SetWindowTheme 调用解决了这个问题。感谢汉斯帕桑特

4

0 回答 0