Talvolta è necessario gestire con un unico metodo l’evento Click di più controlli: ad esempio potremmo avere un form con numerosi pulsanti e voler distinguere con un’unico metodo il pulsante che è stato premuto.
La tecnica che presento in questo esempio è particolarmente semplice, tanto da risultare disarmante:
Public Class Form1
Private Sub Button_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles Button1.Click, Button2.Click, Button3.Click
Dim messaggio As String = ("Premuto il pulsante n. ")
If sender Is Button1 Then
messaggio &= "1"
ElseIf sender Is Button2 Then
messaggio &= "2"
ElseIf sender Is Button3 Then
messaggio &= "3"
End If
MessageBox.Show(messaggio)
End Sub
End Class
Il trucco sta tutto nella seguente parte della definizione del metodo generale Button.Click, in quanto quest’ultimo viene istruito a rimanere in ascolto degli eventi Click di tutti e tre i pulsanti presenti sul form:
Handles Button1.Click, Button2.Click, Button3.Click