Listview选中的项目颜色变为灰色

时间:2011-10-05 07:14:21

标签: c# .net winforms

当鼠标单击另一个控件时,我选择的项目颜色变为灰色,而不是蓝色。我希望它始终显示所选项目的蓝色,如ListBox控件。

我该怎么做?

4 个答案:

答案 0 :(得分:4)

希望您正在寻找HideSelection财产。默认情况下,HideSelection属性为True。将此设置为false即使列表视图失去焦点,也会保持所选项目突出显示。

ListView1.HideSelection = false;
  

获取或设置一个值,该值指示是否所选项目   当控件失去焦点时,控件仍然会高亮显示。

     

当此属性设置为false时,ListView中的选定项   控件保持以与当前颜色不同的颜色突出显示   ListView时操作系统指定的选择颜色   控制失去焦点。您可以使用此属性来保留项目   当用户单击其他控件时,用户选择此选项   在表格上或移动到不同的窗口。

答案 1 :(得分:2)

您可以尝试通过继承原始ListView控件来创建自己的ListView控件,然后覆盖DefWndProc并输入以下代码:

protected override void DefWndProc(ref Message msg)
{
    if (msg.Msg != 8)
        base.DefWndProc(ref msg);
}  

答案 2 :(得分:1)

要在单击其他控件时将列表视图的选定项目保持为蓝色,请执行以下操作:

  1. 设置listView属性HideSelection = True,因此系统不会覆盖您的颜色。

  2. 对于未选择的项目 - 在ListView SelectedIndexChanged中为BackColor指定白色,为ForeColor指定黑色(参见下面的示例)

  3. 对于所选项目 - 在ListView SelectedIndexChanged中为BackColor指定蓝色,为ForeColor指定白色(参见下面的示例)

    For n = 0 To lvwExplPlot.Items.Count - 1
    
        'UNSELECTED
        If lvwExplPlot.Items.Item(n).Selected = False Then
            lvwExplPlot.Items.Item(n).BackColor = Drawing.Color.White
            lvwExplPlot.Items.Item(n).ForeColor = Drawing.Color.Black
    
        'SELECTED
        Else
            lvwExplPlot.Items.Item(n).BackColor = Drawing.Color.DodgerBlue
            lvwExplPlot.Items.Item(n).ForeColor = Drawing.Color.White
        End If
    Next
    

答案 3 :(得分:0)

试试这个,

foreach (ListViewItem item in listView1.SelectedItems)
{
  item.ForeColor = Color.Gray;
}