获取已检查的ListView项目

时间:2011-01-05 18:16:26

标签: c# listview checkbox tags

我的listview包含combox = true的图片。每个项目都分配了一个标签。 我可以获得焦点项目的标记:

string name = this.lstview1.FocusedItem.Tag.ToString();

我可以获得已检查项目的索引:

  list = lstview1.CheckedIndices.Cast<int>().ToList();

如何获取已检查项目的标记?

2 个答案:

答案 0 :(得分:2)

您可以使用CheckedItems属性代替CheckedIndices

var selectedTags = this.listView1.CheckedItems
                                 .Cast<ListViewItem>()
                                 .Select(x => x.Tag);

无论如何,也可以使用CheckedIndices,例如:

var selectedTags = this.listView1.CheckedIndices
                                 .Cast<int>()
                                 .Select(i => this.listView1.Items[i].Tag);

修改

对LINQ Select()的一点解释:

以下代码:

var selectedTags = this.listView1.CheckedItems
                                 .Cast<ListViewItem>()
                                 .Select(x => x.Tag);
foreach(var tag in selectedTags)
{
   // do some operation using tag
}

在功能上等于:

foreach(ListViewItem item in this.listView1.CheckedItems)
{
   var tag = item.Tag;
   // do some operation using tag
}

在这个特定的例子中没有那么有用,也没有更短的代码长度,但是,相信我,在许多情况下LINQ确实非常有用。

答案 1 :(得分:0)

怎么样


var x = listView1.Items[listView1.CheckedIndices.Cast().ToList().First()].Tag;