我的listview包含combox = true的图片。每个项目都分配了一个标签。 我可以获得焦点项目的标记:
string name = this.lstview1.FocusedItem.Tag.ToString();
我可以获得已检查项目的索引:
list = lstview1.CheckedIndices.Cast<int>().ToList();
如何获取已检查项目的标记?
答案 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;