我有listview與combox =真正containg圖像。每個項目都分配一個標籤。 我可以得到聚焦項目的標籤:獲取ListView項目被檢查
string name = this.lstview1.FocusedItem.Tag.ToString();
我可以檢查項目的索引:
list = lstview1.CheckedIndices.Cast<int>().ToList();
我如何得到檢查項目的標籤?
我有listview與combox =真正containg圖像。每個項目都分配一個標籤。 我可以得到聚焦項目的標籤:獲取ListView項目被檢查
string name = this.lstview1.FocusedItem.Tag.ToString();
我可以檢查項目的索引:
list = lstview1.CheckedIndices.Cast<int>().ToList();
我如何得到檢查項目的標籤?
您可以使用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真的很有幫助。
如何
var x = listView1.Items[listView1.CheckedIndices.Cast().ToList().First()].Tag;
?
Thanx for code.But我怎樣才能爲for循環制作索引。 AS首先總是表示序列的第一個元素。 – Shahgee 2011-01-05 18:47:39
什麼表示(i)i =>和(x)x => x.tag – Shahgee 2011-01-05 18:34:35
是'IEnumerable .Select()'中使用的lambda表達式。它是'IEnumerable'的投影,其中的'Select()'被稱爲另一個'IEnumerable'。第一個基本上說:把'CheckedItems'的每個元素(稱爲x)和每個yield'x.Tag'。所以你會得到一個'IEnumerable
thanx,讓我試試。 – Shahgee 2011-01-05 18:49:17