C#:防止ListViewItem图像被渲染选中

时间:2010-07-28 18:38:02

标签: c# winforms listview listviewitem

我想知道是否可以使用ListView,其中可以像往常一样选择项目,但有一点不同。当选择ListViewItem时,我想在文本标签中看到选择,但是我希望图像保持不变。原因是,目前在图像顶部绘制的蓝色选择看起来很糟糕(透明图像的效果更差!)。

我希望不必使用DrawItem处理程序,但我想希望很渺茫。

非常感谢,

最好的

编辑:我认为我最好添加一个显示问题的屏幕截图。我在LargeIcon模式下使用ListView。

** oups我不允许添加图片*所以这里链接到它。抱歉给你带来不便。 ***

http://cl.ly/adb9c6d29ffc0e2e1b5e

如您所见,所选元素为“Rate vs. Species”。但是,我希望图标上的蓝色色调消失。

再次感谢。

2 个答案:

答案 0 :(得分:1)

对于winforms ListView,我知道这样做的最简单方法是从ListView继承,并覆盖OnDrawSubitem以仅更改图像的绘图。如果这样做,您需要将OwnerDraw设置为true,并重写OnDrawColumnHeader。

请注意,如果您不想继承,可以改为处理DrawSubItem和DrawColumnHeader。

答案 1 :(得分:0)

我认为必须才能直接做到这一点。可能适用于Vista +的一件事是告诉ListView像Windows资源管理器一样自行设置样式

[DllImport("uxtheme.dll", ExactSpelling = true, CharSet = CharSet.Unicode)]
public static extern int SetWindowTheme(IntPtr hWnd, String pszSubAppName, String pszSubIdList);

SetWindowTheme(this.lvSessions.Handle, "Explorer", null);