Получить элементы ListView, которые проверены - PullRequest
1 голос
/ 05 января 2011

У меня есть просмотр списка с combox = истинными изображениями.Каждому предмету присваивается тег.Я могу получить тег сфокусированного элемента:

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

Я могу получить индекс отмеченного элемента:

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

Как получить тег отмеченного элемента?

Ответы [ 2 ]

2 голосов
/ 05 января 2011

Вы можете использовать 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 действительно очень полезен.

0 голосов
/ 05 января 2011

Как насчет


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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...