1

ListView (WinForms) のテキスト フィルターに基づいていくつかのアイテムを非表示にしたいと考えています。
基本的に、リストビューはテキストファイルからアイテムをロードします。ユーザーがリストを検索するときに、アイテムを読み書きしたくありません。検索はコンボボックスの KeyDown イベントで行われますが、ListViewItem の「Visible」プロパティはありません。

ファイルを再読み込みせずにこれを行う簡単な方法はありますか? (これは XML ファイルであり、何千ものアイテムが含まれている可能性があるため、効率的に検索することは困難であり、ユーザーにアプリケーションを使用させることさえ困難です。検索には数分かかるためです (ほとんどの場合、読み込みに時間がかかります))。

4

4 に答える 4

2

追加/削除操作ごとにリストボックスが再描画されるため、遅延が発生する場合があります。このように、Begin/End Update メソッド内に Add/Remove op をラップしてみてください。

myListView.BeginUpdate();
//Add or Remove Items
myListView.EndUpdate();

今、スピードを感じてください。

もちろん、ファイルを一度だけロードする必要があります。

于 2010-05-19T15:56:39.923 に答える
1

あなたが何をしようとしているのか、私にははっきりしません。私はまだいくつかのアイデアを叫びます。おそらく何かが役立つでしょう...

  • ファイルをメモリにキャッシュする
  • 読み取ったアイテムをキャッシュし、その場で入力ボックスに入力します
  • それに応じてアイテムを追加および削除します
  • この質問を見てください
  • やっぱり無理かも?

間違っていたらごめんなさい。:(

于 2010-05-19T15:31:04.023 に答える
0

データを格納するための別のクラスを作成し、ファイルをロードした後に検索することで解決しました。

ファイルに変更を書き込むことはまだ問題ですが、それは別の話です...

于 2010-05-19T20:29:27.207 に答える