zukucode
主にWEB関連の情報を技術メモとして発信しています。

VB.NET イベントのトリガーとなったコントロールを取得する

イベントのトリガーとなったコントロールを取得する方法を紹介します。

例えば以下のように、複数のボタンがHandlerに指定されていて、クリックイベントが発火したときにどのボタンがクリックされたのか判定します。

Private Sub Button_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, Button3.Click
End Sub

senderオブジェクト

イベントの引数のsenderにトリガーとなったコントロールの情報がセットされています。

Object型なのでそのままでは扱いづらいので、今回の場合はボタンに型変換します。

Private Sub Button_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, Button3.Click
    'クリックされたボタンを取得
    Dim button = Ctype(sender, Button)
End Sub

処理を分岐する

上記で取得したボタンのIDで分岐すれば効率よく実装ができます。

Private Sub Button_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, Button3.Click
    'クリックされたボタンを取得
    Dim button = Ctype(sender, Button)

    '全ボタン共通の処理など

    '各ボタン固有の処理↓
    Select Case button.ID
        Case Button1.ID
            'Button1クリック時の処理
        Case Button2.ID
            'Button2クリック時の処理
        Case Button3.ID
            'Button3クリック時の処理
    End Select
    '各ボタン固有の処理↑

    '全ボタン共通の処理など
End Sub

関連記事