イベントの順序


「そんな作り方すんなよ!!」ってツッコミは無しで。

あるイベントに複数のメソッドをハンドルさせた場合、そのメソッドが呼ばれる順序はどこで決まるのだろうか?
昨日上司に聞かれたのだが答えられなかった。

Private Sub Button_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button.Click
    MsgBox("1")

End Sub

Private Sub Button_2(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button.Click
    MsgBox("2")

End Sub

Private Sub Button_3(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button.Click
    MsgBox("3")

End Sub

この場合順序は不定・・・というかどうやって順序が決まっているのかよくわからない。
上に書いてあるメソッドから実行されるわけでもない。
これの順序を自分で決めたい、と上司は言っているわけだ。

というわけで試してみたのがこれ

Private Sub Form_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load

    AddHandler Button.Click, AddressOf Button_1
    AddHandler Button.Click, AddressOf Button_2
    AddHandler Button.Click, AddressOf Button_3

End Sub

Private Sub Button_1(ByVal sender As System.Object, ByVal e As System.EventArgs)
    MsgBox("1")

End Sub

Private Sub Button_2(ByVal sender As System.Object, ByVal e As System.EventArgs)
    MsgBox("2")

End Sub

Private Sub Button_3(ByVal sender As System.Object, ByVal e As System.EventArgs)
    MsgBox("3")

End Sub

こうするとAddHandlerした順序に呼ばれるようだ。

といっても、ちょっと試しただけなのでたまたまそう動いているだけかもしれない。
何よりMSDNにこれを裏付ける記述が見当たらない。
何か知ってる人いたら教えてください。