リスト項目の追加を快適に行うには?

解決


ぽり  2002-06-28 18:24:12  No: 104470

こんにちわ、ぽりです。
いきなり質問です。
   For I = 1 To 1000
      Entry = "登録" & I
      List1.AddItem Entry
   Next I
このコードを実行すると、項目を追加するたびに
リストボックスの書き換えが行われ、見た目の更新でも結構な時間を
費やしているように思われます。
VBAでいうApplication.ScreenUpdating = False
の様に画面の更新を停止する方法って無いでしょうか?
リストボックスのVisibleをいじってもScreenUpda...のような
パフォーマンスが獲られていないような気がします。
ご存じの方居られましたら是非ご教授お願い致します。


たかみちえ  URL  2002-06-28 23:31:12  No: 104471

APIのLockWindowUpdateを使います。
引数にリストボックスのhWndを入れると、
もう一度APIを呼び出す(解除には引数に0を指定)まで、更新が停止されます。


ぽり  2002-06-29 00:47:50  No: 104472

簡潔でいてわかりやすいパーフェクトな回答有り難う御座います。
これから.netに移行するので、
また現れる事があるかと思います。
そのときはどうぞ宜しくお願い致しますm(-_-)m


たかみちえ  URL  2002-06-29 06:25:01  No: 104473

あああ、よく分かりませんけど、もし.NETのリストボックス(または標準関数とか)に、
更新を一時停止するようなメソッドがあったら、それを使った方がいいですよー。

  上のAPIはシステム上(プロセス上かも)でひとつのコントロールしか更新を停止できないので、
使いすぎるとどこかで予期しないことになる(まあ、突然更新が止まってしまうことはないと思いますけど…)可能性があるのと、
  .NETはマルチプラットフォームも考えにあるとのことなので、
そのときAPIを使ってると、困るからです。

  安全にやるなら、リストボックスをいったん非表示にしてもいいと思います。
それで目立ってしまうなら、そのあいだにせもののリストボックスを表示するとか。


ぽり  2002-07-23 18:49:04  No: 104474

APIの使用をなるべく避けているのでリストボックスの
非表示で解決いたしました。
お返事遅れてすみません(--;)
あまりにも遅レスになってしまうのでためらってしまいましたが
改めてお礼申し上げますm(_ _)m


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加