我使用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 。