Procedura: connettere più eventi a un unico gestore eventi nelle pagine Web ASP.NET
Aggiornamento: novembre 2007
Se già si dispone di un gestore eventi, sarà possibile associarvi più eventi del controllo. Gli eventi possono appartenere allo stesso controllo o anche a controlli diversi, purché abbiano la stessa firma di metodo. È ad esempio possibile associare gli eventi Click di diversi controlli server Button di una pagina ASP.NET a un unico gestore eventi. Una volta chiamato il gestore, sarà possibile determinare in quale controllo si è verificato l'evento.
Per connettere più eventi a un unico gestore eventi
Nel codice della pagina aggiungere lo stesso nome di evento e nome di metodo a ogni controllo, come illustrato nell'esempio di codice riportato di seguito.
<asp:Button ID="Button1" onclick="Button_Click" Text="Button1" /> <br /> <asp:Button ID="Button2" onclick="Button_Click" Text="Button2" />
Nota: È necessario accertarsi che la firma del metodo sia corretta per l'evento gestito.
Per connettere più eventi a un unico gestore eventi in Visual Basic
Modificare la clausola Handles di un metodo aggiungendo i nomi degli eventi che il metodo dovrà gestire. Separare i nomi degli eventi con virgole.
Nell'esempio di codice riportato di seguito viene illustrato come associare il metodo Button_Click agli eventi generati dai tre controlli Button.
Sub Button_Click (ByVal sender as System.Object, _ ByVal e as System.EventArgs) _ Handles Button1.Click, Button2.Click, Button3.Click
Nota: Se si utilizza una clausola Handles per associare un evento e un metodo, non inserire anche l'attributo dell'evento nel codice. Ad esempio, non includere un attributo onClick nel codice per un controllo Button, altrimenti il metodo verrà chiamato due volte.
Per determinare in quale controllo è stato generato l'evento
Nel gestore di evento, dichiarare una variabile il cui tipo corrisponda a quello del controllo che ha generato l'evento.
Assegnare alla variabile il primo argomento del gestore eventi, eseguendone il cast nel tipo appropriato.
Nell'esempio di codice riportato di seguito viene illustrato un gestore dell'evento Click di un controllo Button che viene chiamato da diversi pulsanti. Il gestore visualizza la proprietà ID del pulsante che ha generato l'evento.
Private Sub Button_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles Button1.Click, Button2.Click, Button3.Click Dim b As Button = CType(sender, Button) Label1.Text = b.ID End Sub
private void Button_Click(object sender, System.EventArgs e) { Button b = (Button) sender; Label1.Text = b.ID; }