Как выбрать All / SelectNone в .NET 2.0 ListView? - PullRequest
4 голосов
/ 18 сентября 2008

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

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)

Bump

Псевдомазохист имеет SelectNone кейс:

ListView1.SelectedItems.Clear(); 

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

Ответы [ 2 ]

4 голосов
/ 18 сентября 2008

Или

ListView1.SelectedItems.Clear();

или

ListView1.SelectedIndices.Clear();

должен сделать трюк для выбора ни одного, в любом случае.

3 голосов
/ 23 мая 2011

Ух ты, старый ...: 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 раз.

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