当鼠标单击另一个控件时,我选择的项目颜色变为灰色,而不是蓝色。我希望它始终显示所选项目的蓝色,如ListBox
控件。
我该怎么做?
答案 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)
要在单击其他控件时将列表视图的选定项目保持为蓝色,请执行以下操作:
设置listView属性HideSelection = True,因此系统不会覆盖您的颜色。
对于未选择的项目 - 在ListView SelectedIndexChanged中为BackColor指定白色,为ForeColor指定黑色(参见下面的示例)
对于所选项目 - 在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;
}