2011-12-19 6 views
1

listviewの3000件をチェックしたいと思います。これはコードの一部です:リストビューのすべてのアイテムを巨大なリストアイテムでチェックしますか?

項目がチェックされると、リストビューは非常に遅くなります。この問題を解決するためのアイデアを教えてください。ありがとう。

+6

私の考え:なぜあなたはリストビューで3000のアイテムが必要なのでしょうか?私は誰もそれを通過し、1つ1つチェックしないと思う。彼らはよくまとまって整理されるべきです。 –

答えて

0

このようなものはあなたのために役立ちますか? ...チェックすると、項目を辞書に追加します。チェックを外すと、辞書から削除されます。ないコードをテストしていますが、このような何かをすることができれば不思議:

Dictionary<String, ListViewItem> Dic = listView.Items 
    .Cast<ListViewItem>() 
    .ToDictionary(x => x.Text, x => x.SubItems[0].Checked); 

は、あなたがより良いそれについて移動する方法を尋ねました。私が言っていることは、あなたのチェック・イベントにあなたのリスト・ビューにアイテムを追加したいということです。私は、ユーザーが実際にすべての3000をチェックするのではないかと疑うので、あなたがチェックしたアイテムをどのように扱いたいかを決めるコードを変更してください。おなじみではない場合は、実際に必要としていることや望んでいることを反映するために質問を変更してください...

0

大きなリスト項目の場合、forループはforeachループより速く動作します。 try

for(int i = 0; i = < this.1vItem.Items.Count; i++) 
{ 
//Stuff 
} 
0

また、ユーザーが3000個のアイテムをクリックするとは思わないことをお勧めします。しかし、私が最近したことは、アイテムを追加するときに、多くのアイテムが存在しないことを知り、デフォルトでチェックする必要があるということです。の前にを追加してリストに追加します。このような

何か:

foreach (Recipient recipient in recipients) 
{ 
    var item = new ListViewItem(recipient.FirstName + " " + recipient.LastName); 
    item.Tag = recipient; 
    item.Checked = true; 
    lvRicipients.Items.Add(item); 
} 
0
for (int i = 0; i <= listView1.Items.Count - 1; i++) 
{ 
    if (!listView1.Items[i].Checked) 
    listView1.Items[i].Checked = true; 
}