如何强制ListView忽略单击/不突出显示单击的项目?

B. *_*non 5 c# listview highlighting selection winforms

由于我没有根据用户可能选择的内容处理ListView中的项目(处理总是使用列表中的所有内容),我想禁止选择可能使用户认为他将处理限制为那个项目(我已经有多选=假,所以这不是问题).

Adr*_*tti 10

没有任何属性可以禁用项目选择ListView.

您可以做的是通过附加事件处理程序来处理通知已选择项目的事件ItemSelectionChanged,然后取消选择该项目:

yourListView.ItemSelectionChanged += yourListView_ItemSelectionChanged;

private void yourListView_ItemSelectionChanged(
    object sender,
    ListViewItemSelectionChangedEventArgs e)
{
   if (e.IsSelected)
      e.Item.Selected = false;
}
Run Code Online (Sandbox Code Playgroud)


TBD*_*TBD 5

为了增加Adriano Repettis的透明度,我在要遮挡的项目上添加了类似的颜色,他的解决方案可以防止蓝色突出显示,但是该项目仍然具有焦点,当该项目的背景色设置为除白色以外的任何其他颜色时,都会出现问题所选行的变为白色。为了解决这个问题,我建议添加以下行:

e.Item.Focused = false;
Run Code Online (Sandbox Code Playgroud)

最终代码:

yourListView.ItemSelectionChanged += yourListView_ItemSelectionChanged;

private void yourListView_ItemSelectionChanged(
    object sender,
    ListViewItemSelectionChangedEventArgs e)
{
    if (e.Item.BackColor == Color.LightGray)
    {
        e.Item.Selected = false;
        e.Item.Focused = false;
    }
}
Run Code Online (Sandbox Code Playgroud)