.NET 2.0 ListViewでSelectAll / SelectNoneを行う方法は?
質問
以下を使用せずにリストビューですべての項目を選択するか、項目を選択しないようにする良い方法は何ですか:
foreach (ListViewItem item in listView1.Items)
{
item.Selected = true;
}
または
foreach (ListViewItem item in listView1.Items)
{
item.Selected = false;
}
基礎となる Win32 リストビュー共通コントロールがサポートしていることは知っています LVM_SETITEMSTATE メッセージ これを使用して選択状態を設定でき、インデックスとして -1 を渡すと、すべての項目に適用されます。.NET Listview コントロールの背後にあるコントロールにメッセージを PInvoking することは避けたいです (私は悪い開発者になって文書化されていない動作に依存したくありません。フルマネージドの 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();
とにかく、何も選択しないようにする必要があります。
所属していません StackOverflow