Formロード時のイベントの発生順は、以下の通りとなる。
・Load
・Activated
・Shown
検証
事前準備
・特になし
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Console.WriteLine(“aaa”)
End Sub
Private Sub Form1_Activated(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Activated
Console.WriteLine(“bbb”)
End Sub
Private Sub Form1_Shown(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Shown
Console.WriteLine(“ccc”)
End Sub
End Class
出力画面に、
aaa
bbb
ccc
と表示される。
その後は、最小化しても、他のウィンドウを被せてもActivatedイベントのみ発生する。
Shownイベントは、Loadイベントの次に来るので、
Loadイベント…処理が早いもの
Shownイベント…処理が遅いもの
と分けると、画面の表示順をある程度コントロールできる。
また、どうしても処理を終了してから次の処理に移りたいときは、
Application.DoEvents()
をLoadイベントに記載すると、Loadイベントが完了してから、
Shownイベントが発生する。
Loadイベントに限らず、イベントの終了を待って、次のイベントを発生させる場合、
Sleepなどで待っていてもうまくいかないことが多いので、
イベントの終了を待つときには、
Application.DoEvents()
を使用する。
システム開発のためのVB.NETプログラミング関係一覧に戻る