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