我需要检查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并逐个检查的情况下执行此操作?
答案 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)时无法找到。
添加项目时,请使用键/值对并对值使用包含。