如何修改ListView选择行的颜色?

烤火的鱼 2008-01-03 08:10:39
ListView设置为Detail模式,允许整行选择,光标离开后保留选择的行。
当ListView是当前控件时,选择行的颜色为蓝底白字,非常清晰,但失去焦点后,选择的项马上就成了浅灰色的背景了,看不清楚,尤其是液晶显示器,更是不知道选择的哪一行,有什么办法进行处理,我目前的权宜之计是将整个ListView背景设置成很深的背景,这样,当ListView失去焦点时,灰色的背景就很明显了,但深色背景实在很难看,和整个界面颜色不协调,我希望使用默认的白色背景,当失去焦时,仍然很清楚地看到当前选择的行,该如何处理?好象无法设置选择状态的颜色。
...全文
1147 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lqk123 2012-05-14
  • 打赏
  • 举报
回复
学习了,谢谢哈!
烤火的鱼 2008-01-06
  • 打赏
  • 举报
回复
问题已经圆满解决,试了一下,重绘实在太复杂,抄了教材上的代码,还是不行,现在我耍了一个小聪明,将ListView和HideSelection设为True,默认也是True:lsvSchem.HideSelection = true;
这样,ListView失去焦点时,就不会调用系统的颜色绘制选择项而使用用户指定的颜色了,然后用下面的代码:
private void lsvSchem_SelectedIndexChanged(object sender, EventArgs e)
{
foreach (ListViewItem item in lsvSchem.Items)
{
if (item.Selected)
{
item.BackColor = Color.Blue;//指定颜色
item.ForeColor = Color.White;
}
else
{
item.BackColor = lsvSchem.BackColor;//使用默认颜色
item.ForeColor = lsvSchem.ForeColor;
}
}
}
也就是当选择项发生改变时,将非选择项使用默认的颜色,选择项重新指定颜色,我曾经用过更换背景等多种方法,还是这个方法好,我感觉到自己好象很有才,哈哈
沅江汐水 2008-01-03
  • 打赏
  • 举报
回复
css 可以控制吧,

试试看

如果不行,就只能重写了
GhostAdai 2008-01-03
  • 打赏
  • 举报
回复
继承,重写

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧