フォーム上に配置した多数(50個程度)のLabelをできるだけ速く表示するには?


VB.NETビギナー  2006-11-12 15:25:58  No: 134087

ひとつのForm上に50個程度のLabelあるいはPictureBoxを
配置するプログラムを作成しました。

同じような質問を別のサイトだったかで見かけ、最初に
VisibleをFalseにしておいてからFormのShownイベントで
すべてのVisibleをTrueにするという方法ですべての
LabelあるいはPictureBoxが瞬時に表示されたように見える
というようなことが書かれていたと思います。

まず、Shownイベントを使った方法ですが、Labelが
ひとつずつ目に見える速度で表示されてしまいました。
つまりすべてのLabelを瞬時に表示することができませんでした。

同様のことをVB6でやっていたときには問題なく表示されて
いたのですが、LabelやPictureBox自体の表示速度を上げる
ような方法があるのでしょうか?
どなたかご存じの方、よろしくおねがいします。


VBレスキュー(花ちゃん)  2006-11-12 16:52:15  No: 134088

表示速度的にはどうなるか、確認しておりませんが、下記を試して見て下さい
Me.SuspendLayout()
Me.ResumeLayout(False)


VB.NETビギナー  2006-11-12 22:07:02  No: 134089

VBレスキューさま
ありがとうございます。
ネットで検索してサンプルプログラムをもとに試してみましたが
うまく行きませんでした。
ケースとしては珍しいプログラムなのでしょうか。


VBレスキュー(花ちゃん)  2006-11-12 22:19:10  No: 134090

どのように試して、どのようにうまくいかなかったのでしょうか?


通ってみた  2006-11-13 00:51:07  No: 134091

インチキな方法かもしれませんが、Label全体の前面に全面を覆う大きさのPictureBoxを置く事で、表面上Labelが見えないようにしておき、Labelを表示する時にはPictureBoxの方を非表示にしたら瞬時に全部見えるようになると思いますがどうでしょうか

再度表示、非表示の切り替えを行いたい場合も、PictureBoxを表示、非表示すれば瞬時にできるはずですが


VBレスキュー(花ちゃん)  2006-11-13 06:28:29  No: 134092

気になったので、下記のコードを使って50個のラベルを表示して見たのですが
私の環境(WindowsXP(Pro SP2) VB.NET2003 Celeron 2.40GHz  496MB RAM)では
0.05 秒しかかからず、仰るような動作は確認できませんでした。

尚、VB2005 で確認すると 0.08秒と少し遅くはなりましたが....。

http://www.microsoft.com/japan/msdn/vbasic/migration/tips/DynamicControl/


VB.NETビギナー  2006-11-13 16:24:29  No: 134093

>VBレスキュー(花ちゃん) さま
どうもありがとうございます。
教えていただいたコードで試したところ、一度にパッとはいかないものの
0.08秒程度で表示されました。
コード自体は私のコードと大差はありません。

実際に私が作成しているプログラムですが、Labelを配置するコードの
直前にFormのBackgraoundImageに200KB程度の画像を設定していたり
PictureBoxを10個程度配置しています。
これらBackGroundImage等の影響でLabelの表示が遅くなる可能性は
あるでしょうか?
Formサイズは1024×768です。

実行環境はVBレスキュー(花ちゃん) さまと大きな違いはありません。

>通ってみた様
同様な方法ですが、実は私も考えておりましたが、とりあえず正攻法で
やってみてどうしてもダメな場合はおっしゃるような方法をとるしか
ないのかとも考えております。
ありがとうございました。


我龍院  2006-11-13 17:47:17  No: 134094

>これらBackGroundImage等の影響でLabelの表示が遅くなる可能性は
>あるでしょうか?
時間のかかりそうな処理をコメントアウトしてみればすぐわかるのでは。


VB.NETビギナー  2006-11-13 18:15:04  No: 134095

>我龍院様
あ、そうですね。
試してみます。
ありがとうございました。


VB.NETビギナー  2006-11-13 20:44:32  No: 134096

我龍院さんのご指摘によってBackGroundImageを取り外して実行したところ
VBレスキュー(花ちゃん)さんが仰るのと同等の速度を実現できました。

しかしBackGroundImageを省略することができないので、これをいかに
速く表示させるかに焦点が絞られました。

200KB程度の画像をFormに貼り付けるだけですが、何か良い方法は
あるでしょうか?

デザイン時にackGroundImageプロパティに貼り付ける方法とコードでロードする
方法の二通りを試しましたがとくに速度の違いは感じられませんでした。


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

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






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