如何在 .NET 2.0 ListView 中全选/全选?

Ian*_*oyd 4 listview selectall

在不使用的情况下在列表视图中选择全部或不选择项目的好方法是什么:

foreach (ListViewItem item in listView1.Items)
{
 item.Selected = true;
}
Run Code Online (Sandbox Code Playgroud)

或者

foreach (ListViewItem item in listView1.Items)
{
 item.Selected = false;
}
Run Code Online (Sandbox Code Playgroud)

我知道底层的 Win32 列表视图公共控件支持LVM_SETITEMSTATE 消息,您可以使用它来设置选定状态,并通过传递 -1 作为索引,它将应用于所有项目。我宁愿不向恰好位于 .NET Listview 控件后面的控件 PInvoking 消息(我不想成为一个糟糕的开发人员并依赖未记录的行为 - 当他们将其更改为完全托管的 ListView 类时)

Pseudo MasochistSelectNone案例:

ListView1.SelectedItems.Clear(); 
Run Code Online (Sandbox Code Playgroud)

现在只需要SelectAll代码

Pse*_*ist 5

任何一个

ListView1.SelectedItems.Clear();
Run Code Online (Sandbox Code Playgroud)

或者

ListView1.SelectedIndices.Clear();
Run Code Online (Sandbox Code Playgroud)

无论如何,应该为 select none 做诀窍。


Cip*_*ipi 5

哇,这很旧了...:D

全选

 listView1.BeginUpdate(); 
 foreach (ListViewItem i in listView1.Items)
 {
     i.Selected = true;
 }
 listView1.EndUpdate();
Run Code Online (Sandbox Code Playgroud)

选择逆

 listView1.BeginUpdate(); 
 foreach (ListViewItem i in listView1.Items)
 {
     i.Selected = !i.Selected;
 }
 listView1.EndUpdate();
Run Code Online (Sandbox Code Playgroud)

BeginUpdateEndUpdate用于在更新其内容时禁用/启用控件重绘...我认为它会更快地选择所有内容,因为它只会刷新一次,而不是listView.Items.Count多次。