ListView CheckedItems按名称查找项目

时间:2013-09-03 21:12:45

标签: c# winforms listview

我需要检查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并逐个检查的情况下执行此操作?

3 个答案:

答案 0 :(得分:1)

摆脱新的ListViewItem并改为执行此操作:

ListViewItem itemYouAreLookingFor = listView1.FindItemWithText("NameToLookFor");

// Did we find a match?
if (itemYouAreLookingFor != null)
{
    // Yes, so find out if the item is checked or not?
    if(itemYouAreLookingFor.Checked)
    {
        // Yes, it is found and check so do something with item here
    }
}

答案 1 :(得分:1)

您可以为此目的受益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);

答案 2 :(得分:0)

使用new,您正在创建一个未添加到列表视图的新项目(因为它是新的),因此在使用listView1.Contains(item)时无法找到。

添加项目时,请使用键/值对并对值使用包含。