ListView设置为Detail模式,允许整行选择,光标离开后保留选择的行。
当ListView是当前控件时,选择行的颜色为蓝底白字,非常清晰,但失去焦点后,选择的项马上就成了浅灰色的背景了,看不清楚,尤其是液晶显示器,更是不知道选择的哪一行,有什么办法进行处理,我目前的权宜之计是将整个ListView背景设置成很深的背景,这样,当ListView失去焦点时,灰色的背景就很明显了,但深色背景实在很难看,和整个界面颜色不协调,我希望使用默认的白色背景,当失去焦时,仍然很清楚地看到当前选择的行,该如何处理?好象无法设置选择状态的颜色。

解决方案 »

  1.   

    css 可以控制吧,试试看如果不行,就只能重写了
      

  2.   

    问题已经圆满解决,试了一下,重绘实在太复杂,抄了教材上的代码,还是不行,现在我耍了一个小聪明,将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;
                    }
                }
            }
    也就是当选择项发生改变时,将非选择项使用默认的颜色,选择项重新指定颜色,我曾经用过更换背景等多种方法,还是这个方法好,我感觉到自己好象很有才,哈哈