そのため、上限が約 1000 項目の ListView があります。テキストボックスの TextChanged イベントを使用して、これらの項目をフィルタリングできる必要があります。少数の項目 (~400) でうまく機能するコードがいくつかありますが、1000 個の項目すべての完全なリストを再表示する必要がある場合、約 4 秒かかります。
毎回新しい ListViewItems を作成しているわけではありません。代わりに、アイテム コレクション全体のリストを保持し、そこから追加します。どうやら.Addメソッドに時間がかかっているようです。ここに小さなサンプルがあります:
this.BeginUpdate();
foreach (ListViewItem item in m_cachedItems)
{
MyListView.Add(item);
}
this.EndUpdate;
不足しているアイテム (つまり、現在表示されているアイテムとアイテムの合計リストとの差) のみを追加しようとしましたが、これも機能しません。現在表示されている項目が 1 つだけで、ユーザーがテキスト ボックスをクリアしたため、リスト全体を表示する必要がある場合があります。
私は、このような大規模なサンプルを使用して .NET コントロールからパフォーマンスを引き出すことにあまり慣れていないため、それを行うためのより良い方法を実際には知りません。.Add() メソッドを使用する方法はありますか、そうでない場合は、より良い一般的な解決策がありますか?