1

私は時々約10000個のアイテムを入れる必要があるListViewを持っています。ListViewはこれをうまく処理できず、アイテムを並べ替えて描画している間、数秒間ロックします。アイテムを個別に追加すると、さらに悪化し、1 分近くロックアップします。

これを回避するために、ListView を表示する前にデータを入力してみようと思いましたが、残念ながらそれには別のアイデアがあります。ListView を含むパネルを表示したときにのみ描画が開始され、プログラムが数秒間ハングします。

この遅延を解消する方法についてのアイデアはありますか? それとも、大量のデータを表示するのに適した、比較的使いやすい別のコンポーネントはありますか?

4

2 に答える 2

7

VirtualModeを使用する必要があります。

于 2008-09-25T04:20:39.903 に答える
0

上手。バックグラウンドでコンテンツをロードしたいだけの場合は、スレッドを試してListViewにデータを入力することができます。これにより、フォームがロードされます。

Application.DoEvents();を配置しても、一時停止することはないと思います。アイテムをロードしているとき(フォームを再描画してイベントを受信できるようにします)。

for (int ix=0; ix < 10000; ix ++)
{
 listView1.Items.Add(ix.ToString());
 Application.DoEvents();
}

VirtualModeを知らないのであれば、私の提案は良いと思います

于 2008-09-25T04:35:38.463 に答える