我需要检查ListView的CheckedItems集合中是否存在具有特定名称的项目。

到目前为止,我已经尝试过:

ListViewItem item = new ListViewItem(itemName);

if (listView1.CheckedItems.IndexOf(item) >= 0)
   return true;




ListViewItem item = new ListViewItem(itemName);

if (listView1.CheckedItems.Contains(item))
   return true;


这些都不起作用。有没有一种方法可以不循环检查CheckedItems并一一检查它们呢?

最佳答案

为此,您可以使LINQ受益:

bool itemChecked =  listView1.CheckedItems.OfType<ListViewItem>()
                             .Any(i => i.Text == itemText);
//You can also retrieve the item with itemText using FirstOrDefault()
var checkedItem = listView1.CheckedItems.OfType<ListViewItem>()
                                        .FirstOrDefault(i=>i.Text == itemText);
if(checkedItem != null) { //do you work...}


您还可以使用ContainsKey来确定是否选中了该项目(名称为itemName):

bool itemChecked = listView1.CheckedItems.ContainsKey(itemName);

10-08 09:01