投稿日 | : 2004/03/05(Fri) 09:11 |
投稿者 | : K.J.K. |
Eメール | : akiya@koalanet.ne.jp |
URL | : |
タイトル | : Re: リストボックスへの高速追加 |
UIに関する操作を単一スレッドで行う以上、それに対応して仕様を
決めるしかありません。
連続してAddItemを呼び出して、それが3秒もかかるというのなら、
1,一度に少しずつ追加し、それをTimerのイベントなどで繰り返す。
2,そもそも、それだけ大量のデータを入れたら、ListBoxとして
使いにくいから、根本的に仕様を見直す。
3,それほどの数ではないのに時間がかかる、という場合は、追加
する文字列に問題がないか調べる。
のどれかになるでしょう。
3秒間というのは、UIとしては致命的なので、0.5秒程度以下で追加
できる量を見極めて、それぐらいの単位で繰り返して追加していく、
というのが無難な対応かも知れません。
ListBoxそのものは16Bits制限を受けます。ですが、その上限一杯
までデータを入れるようだと、かなり使い勝手が悪くなりますので、
その制限自体は特に問題がないと思われます。
また、VBのListBox(など標準コントロール)の特徴ですが、AddItem
などする場合、VBが、[UNICODE->Anis文字変換]し、その後に
SendMessageAを使います。この文字変換で時間がかかるケースも
存在します。元となる文字列に、変換されない文字が含まれて
いないかもチェックしてみると良いかも知れません。