Как выбрать All/SelectNone в .NET 2.0 ListView?
Вопрос
Каков хороший способ выбрать все или не выбирать элементы в списке без использования:
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.