同时在ListView上使用CreateParams和SetWindowTheme

时间:2014-04-21 11:55:17

标签: c# listview uxtheme createparams

我使用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调用来解决问题。感谢 Hans Passant

0 个答案:

没有答案