【備忘録】VB.netでのLoadイベントについて | 「右」と「左」の書き順、大丈夫ですか?
2012-01-20 06:52:05

【備忘録】VB.netでのLoadイベントについて

テーマ:仕事
 今更なんだが・・忘れない為に・・・。




VB6の頃、

Load frmABC

というコードだけを記述し、

フォームをロードだけして表示はしない。

という事をしていた。

Loadイベントでフォームの初期化処理は行い、

でも、フォームはまだ表示したくない。。

Show()のタイミングでフォームの表示速度を上げたいとき、

もしくは、フォームは非表示のまま、

バックグランドでフォームに関連付けられた

タイマー処理を行いたい・・など。。用途は色々あった。






同じような事を、VB.NETでやろうとしても上手くいかない。

Dim frm as New frmABC

だけで、

Loadイベントが通知されると思っていたのだが、

そうでもないみたい。。

frm.Show()

や、

frm.Visibled=True

としてやらないと

Loadイベントが通知されない。。


フォームを表示しないと、
Loadイベントが通知されないでは困る。。



frm.Visibled=True
frm.Visibled=False

とやっても良いが、

これだと、

遅いPCではウインドウがチラ見えしてしまうかも・・だし・・。



そこで、対処策を調べると・・・

こんな方法(↓)を見つけた・・。


frmABCのクラス内に、

 Public Sub frmABC_PreLoad()
        frmABC_Load(Me, Nothing) ’Loadイベントを呼び出すだけ・・
 End Sub

という関数を作成。


フォームを呼び出す側は・・

Dim frm as New frmABC

の後(直後)に、

frm.frmABC_PreLoad()

を記述する。

これだけ。

これだけ・・なんだが・・

ん~・・美しくない。。

ま、ショウガナイのか・・・。






ちなみに、

Dim frm as New frmABC

だけで、(内部的には)コンストラクタの呼び出しまでは

行っているようだ・・。

だったら、そのタイミングで

Loadイベントを発生させてくれても良いと思うのだが・・・。



とりあえず、これで一件落着なのだが、

もっとスマートな方法あるんだゼェーーーッマジンガーZ

・・と思っていらっしゃる方、

どうか、その妙案教えてください。

お願い致します。<m(_ _)m>


ペタしてね