Вопрос

Каков хороший способ выбрать все или не выбирать элементы в списке без использования:

foreach (ListViewItem item in listView1.Items)
{
 item.Selected = true;
}

или

foreach (ListViewItem item in listView1.Items)
{
 item.Selected = false;
}

Я знаю, что базовый общий элемент управления Win32 listview поддерживает Сообщение LVM_SETITEMSTATE который вы можете использовать для установки выбранного состояния и, передав -1 в качестве индекса, он будет применяться ко всем элементам.Я бы предпочел не отправлять сообщения PInvoking в элемент управления, который находится за элементом управления .NET Listview (я не хочу быть плохим разработчиком и полагаться на недокументированное поведение - когда они изменят его на полностью управляемый класс ListView)

Ударяться

Псевдомазохист имеет ВыбратьНет случай:

ListView1.SelectedItems.Clear(); 

Теперь просто нужно Выбрать все код

Это было полезно?

Решение

Вау, это старо...:D

ВЫБРАТЬ ВСЕ

 listView1.BeginUpdate(); 
 foreach (ListViewItem i in listView1.Items)
 {
     i.Selected = true;
 }
 listView1.EndUpdate();

ВЫБЕРИТЕ ОБРАТНЫЙ

 listView1.BeginUpdate(); 
 foreach (ListViewItem i in listView1.Items)
 {
     i.Selected = !i.Selected;
 }
 listView1.EndUpdate();

BeginUpdate и EndUpdate используются для отключения/включения перерисовки элемента управления во время обновления его содержимого...Я полагаю, что он выберет все быстрее, поскольку обновится только один раз, а не listView.Items.Count раз.

Другие советы

Или

ListView1.SelectedItems.Clear();

или

ListView1.SelectedIndices.Clear();

в любом случае должен помочь выбрать none.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top