ひとつのForm上に50個程度のLabelあるいはPictureBoxを
配置するプログラムを作成しました。
同じような質問を別のサイトだったかで見かけ、最初に
VisibleをFalseにしておいてからFormのShownイベントで
すべてのVisibleをTrueにするという方法ですべての
LabelあるいはPictureBoxが瞬時に表示されたように見える
というようなことが書かれていたと思います。
まず、Shownイベントを使った方法ですが、Labelが
ひとつずつ目に見える速度で表示されてしまいました。
つまりすべてのLabelを瞬時に表示することができませんでした。
同様のことをVB6でやっていたときには問題なく表示されて
いたのですが、LabelやPictureBox自体の表示速度を上げる
ような方法があるのでしょうか?
どなたかご存じの方、よろしくおねがいします。
表示速度的にはどうなるか、確認しておりませんが、下記を試して見て下さい
Me.SuspendLayout()
Me.ResumeLayout(False)
VBレスキューさま
ありがとうございます。
ネットで検索してサンプルプログラムをもとに試してみましたが
うまく行きませんでした。
ケースとしては珍しいプログラムなのでしょうか。
どのように試して、どのようにうまくいかなかったのでしょうか?
インチキな方法かもしれませんが、Label全体の前面に全面を覆う大きさのPictureBoxを置く事で、表面上Labelが見えないようにしておき、Labelを表示する時にはPictureBoxの方を非表示にしたら瞬時に全部見えるようになると思いますがどうでしょうか
再度表示、非表示の切り替えを行いたい場合も、PictureBoxを表示、非表示すれば瞬時にできるはずですが
気になったので、下記のコードを使って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レスキュー(花ちゃん) さま
どうもありがとうございます。
教えていただいたコードで試したところ、一度にパッとはいかないものの
0.08秒程度で表示されました。
コード自体は私のコードと大差はありません。
実際に私が作成しているプログラムですが、Labelを配置するコードの
直前にFormのBackgraoundImageに200KB程度の画像を設定していたり
PictureBoxを10個程度配置しています。
これらBackGroundImage等の影響でLabelの表示が遅くなる可能性は
あるでしょうか?
Formサイズは1024×768です。
実行環境はVBレスキュー(花ちゃん) さまと大きな違いはありません。
>通ってみた様
同様な方法ですが、実は私も考えておりましたが、とりあえず正攻法で
やってみてどうしてもダメな場合はおっしゃるような方法をとるしか
ないのかとも考えております。
ありがとうございました。
>これらBackGroundImage等の影響でLabelの表示が遅くなる可能性は
>あるでしょうか?
時間のかかりそうな処理をコメントアウトしてみればすぐわかるのでは。
>我龍院様
あ、そうですね。
試してみます。
ありがとうございました。
我龍院さんのご指摘によってBackGroundImageを取り外して実行したところ
VBレスキュー(花ちゃん)さんが仰るのと同等の速度を実現できました。
しかしBackGroundImageを省略することができないので、これをいかに
速く表示させるかに焦点が絞られました。
200KB程度の画像をFormに貼り付けるだけですが、何か良い方法は
あるでしょうか?
デザイン時にackGroundImageプロパティに貼り付ける方法とコードでロードする
方法の二通りを試しましたがとくに速度の違いは感じられませんでした。
ツイート | ![]() |