更改ListView的背景选择颜色?

7

我该如何更改ListView中选定项的选择颜色?默认情况下,当用户选择一个项时,它会显示蓝色背景。我想将其更改为深灰色或其他颜色...

谢谢帮助!
3个回答

8
如果你想让你的ListView拥有Windows资源管理器ListView的样式(包括Win7 / Vista中带有圆角边缘的美观外观),你可以使用一些P/Invoke来实现:
[DllImport("uxtheme.dll", CharSet = CharSet.Unicode, ExactSpelling = true)]
internal static extern int SetWindowTheme(IntPtr hWnd, string appName, string partList);

// You can subclass ListView and override this method
protected override void OnHandleCreated(EventArgs e)
{
    base.OnHandleCreated(e);
    SetWindowTheme(this.Handle, "explorer", null);
}

3

对于WinForms,您需要将OwnerDraw属性设置为true,然后使用DrawItemDrawSubItem事件手动绘制项目。

点击这里查看示例。


1

ObjectListView -- 是一个 WinForm ListView 的包装器,它具有属性来控制所选行的背景和前景颜色。它使用了 Obalix 建议的技术,但已经为您完成了艰苦的工作。

因此,只需付出一点努力,您就可以制作出像这样的东西:

alt text
(来源:codeproject.com)

"Feel Good Inc" 行显示了自定义的前景和背景选择。


2
ObjectListView 不是 ListView 的即插即用替代品。为了使用它,可能需要对现有代码进行一些重构。 - Steve
我分析了这个项目,但我认为它太难学了。 - user1372430

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接