フォームの初回表示スピードを上げる


■予めLoadイベントを呼び出し初期処理を済ませておく

 Public Sub kazFormPreLoad()
  Form2_Load(Me, Nothing)
 End Sub
該当のフォーム(この場合Form2)に上記の様なメソッドを実装し、 親フォームからは下記の通り事前に呼び出しておく
 Dim frm As New Form2
 frm.kazFormPreLoad()
もう少し乱暴な記述にすると・・・ 該当のフォームのLoadイベントプロシージャをPublicに変えてから
 frm.Form2_Load(frm, Nothing)
としても同様の動作はするが、セキュリティ的な問題等如何か? 自己責任の範疇で、ご判断頂きたく

■どんなケースで必要なのか?

フォームのLoadイベントで走る初期化処理が重いことにより、 表示までに時間がかかるケース等ですか? 必要なフォームを予めロードしておく事で表示スピードを苦にすることはなくなる、 スタートフォームであれば、スプラッシュを使うのも手ですが・・・ 今回のケースは、ロード時にListViewへのItem追加処理を書いており、その処理が思いのほか重く、 この様な回避策をとる事となった。色々と調べてはみたのですが、他の方法を見つけられず・・・ ※ ただ、この方法だとLoadイベント自体は重複して走る様だ・・・ 強制的に呼び出した時と初回のShowメソッドで表示した際の計2回、 これを回避するには、初期化が済んでいるかを判断した上で、重複した処理をしないよう配慮が必要である、 ここを怠るとせっかくの事前処理も「水の泡」と言う事になりかねない・・・


関連リンク(情報源)

http://ameblo.jp/mamo206/entry-11140630594.html

TOP ▲