如何在.NET 2.0 ListView中选择全部/取消选择?

4

如何在不使用以下方式的情况下选择所有或不选择任何项目:

foreach (ListViewItem item in listView1.Items)
{
 item.Selected = true;
}

或者

foreach (ListViewItem item in listView1.Items)
{
 item.Selected = false;
}

我知道底层的Win32 listview通用控件支持LVM_SETITEMSTATE消息,您可以使用它来设置选定状态,并通过将索引设为-1,它将应用于所有项目。我不想通过PInvoking消息到.NET Listview控件后面的控件来实现(我不想成为一个不好的开发人员,并依赖于未记录的行为——当他们将其更改为完全托管的ListView类时)。

Bump

Pseudo Masochist提供了的解决方法:

ListView1.SelectedItems.Clear(); 

现在只需要 SelectAll 代码。
2个回答

5

哇,这真的很老... :D

全选

 listView1.BeginUpdate(); 
 foreach (ListViewItem i in listView1.Items)
 {
     i.Selected = true;
 }
 listView1.EndUpdate();

SELECT INVERSE

 listView1.BeginUpdate(); 
 foreach (ListViewItem i in listView1.Items)
 {
     i.Selected = !i.Selected;
 }
 listView1.EndUpdate();

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


5

不论是

ListView1.SelectedItems.Clear();

或者

ListView1.SelectedIndices.Clear();

无论如何,应该可以解决选择“none”的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接