Como Select All / Select None em .NET 2.0 ListView?
Pergunta
O que é uma boa maneira de selecionar tudo ou selecione nenhum item numa lista sem usar:
foreach (ListViewItem item in listView1.Items)
{
item.Selected = true;
}
ou
foreach (ListViewItem item in listView1.Items)
{
item.Selected = false;
}
Eu sei que os subjacentes Win32 listview suporta controle comum LVM_SETITEMSTATE mensagem que você pode usar para definir o estado selecionado, e passando-1 como o índice que será aplicado a todos os itens. Eu prefiro não ser PInvoking mensagens para o controle que acontece de estar por trás do controle .NET Listview (Eu não quero ser uma má desenvolvedor e dependem do comportamento não documentada - para quando eles alterá-lo para uma classe ListView totalmente gerenciado)
Bump
Pseudo Masochist tem SelectNone caso:
ListView1.SelectedItems.Clear();
Agora, só precisa do SelectAll Código
Solução
Wow este é velho ...: D
Selecionar Tudo
listView1.BeginUpdate();
foreach (ListViewItem i in listView1.Items)
{
i.Selected = true;
}
listView1.EndUpdate();
Selecionar inverso
listView1.BeginUpdate();
foreach (ListViewItem i in listView1.Items)
{
i.Selected = !i.Selected;
}
listView1.EndUpdate();
BeginUpdate
e EndUpdate
são usados ??para ativar / desativar o redesenho controle, enquanto o seu conteúdo está sendo atualizado ... Eu acho que seria selecionar tudo mais rápido, uma vez que atualizar apenas uma vez, e não vezes listView.Items.Count
.
Outras dicas
De qualquer
ListView1.SelectedItems.Clear();
ou
ListView1.SelectedIndices.Clear();
deve fazer o truque para selecionar nenhum, de qualquer maneira.