2011-01-05 5 views
1

나는 combox = true containg images로 listview를 가지고 있습니다. 각 항목에는 태그가 지정됩니다. 나는 초점을 맞춘 항목의 태그를 얻을 수 있습니다 :체크리스트보기 항목보기

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

내가 검사 항목의 인덱스를 얻을 수 있습니다 :

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

은 어떻게 체크 항목의 태그를받을 수 있나요?

답변

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()

리틀 설명 :

다음 코드 : 많은에, 날 믿어, 그래서 유용도 코드 길이의 기간의 단축이 특정 예에서

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

되지 않지만 :

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

는 기능적으로 동일 상황 LINQ 정말 도움이됩니다.

+0

(i) i => 및 (x) x => x.tag를 나타내는 것 – Shahgee

+0

'IEnumerable .Select()'에 람다식이 사용됩니까? 그것은'IEnumerable'을 'Select()'라고하는 다른 IEnumerable에 투영 한 것입니다. 첫 번째는 기본적으로 다음과 같이 말합니다 :'CheckedItems' (x라고 부름)의 각 요소와 각 yield 'x.Tag'를 취하십시오. 그래서 당신은 CheckedItems' '에 해당하는 모든 태그를 포함하는'IEnumerable을 을'얻을 것이다. 나 해보자, – digEmAll

+0

고맙습니다 (희망 ... 영어는 내 모국어가 아닌, 명확하게하기 위해). – Shahgee

0

어떻게

 

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

어떻습니까?

+0

코드를위한 Thangx.But 어떻게 for 루프를위한 인덱스를 만들 수 있습니까? 처음에는 항상 시퀀스의 첫 번째 요소를 나타냅니다. – Shahgee

관련 문제