【发布时间】:2015-07-20 08:45:23
【问题描述】:
当鼠标单击另一个控件时,我选择的项目将颜色变为灰色,而不是蓝色。我希望它始终为 ListBox 控件等选定项目显示蓝色。
我该怎么做?
【问题讨论】:
-
你应该标记这个“win forms”或“wfp”或者其他什么(我假设Forms?)
-
在 Web 应用程序或窗口应用程序中...请在您的问题中指定。
当鼠标单击另一个控件时,我选择的项目将颜色变为灰色,而不是蓝色。我希望它始终为 ListBox 控件等选定项目显示蓝色。
我该怎么做?
【问题讨论】:
希望您正在寻找HideSelection 属性。 HideSelection 属性默认为 True。将此设置为 false 即使列表视图失去焦点,也会使所选项目保持突出显示。
ListView1.HideSelection = false;
获取或设置一个值,该值指示是否在 当控件失去焦点时,控件仍然突出显示。
当该属性设置为 false 时,ListView 中的选中项 控件仍然以不同于当前的颜色突出显示 ListView 时操作系统指定的选择颜色 控制失去焦点。您可以使用此属性来保留 用户点击不同控件时可见的用户选择 在表单上或移动到不同的窗口。
【讨论】:
您可以尝试通过从原始 ListView 控件继承来创建自己的 ListView 控件,然后重写 DefWndProc 并输入以下代码:
protected override void DefWndProc(ref Message msg)
{
if (msg.Msg != 8)
base.DefWndProc(ref msg);
}
【讨论】:
要在单击另一个控件时保持列表视图的选定项为蓝色,请执行以下操作:
设置 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
【讨论】:
试试这个,
foreach (ListViewItem item in listView1.SelectedItems)
{
item.ForeColor = Color.Gray;
}
【讨论】: