Informazioni dettagliate: condivisione di un gestore eventi
Aggiornamento: novembre 2007
In questa lezione verrà descritto come creare un gestore eventi condiviso che gestisce eventi per più controlli.
Nella lezione precedente Interazione con l'utente: creazione di un gestore eventi è stato descritto come scrivere codice per la risposta agli eventi MouseEnter e MouseLeave di un controllo Button. Si supponga tuttavia di voler visualizzare uno stesso messaggio per due o più controlli Button. È possibile scrivere codice nei gestori eventi per ogni controllo, ma esiste anche una soluzione più semplice.
Se si esaminano con attenzione i metodi del gestore eventi MouseEnter, si noterà che la dichiarazione Method (Private Sub Button1_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.MouseEnter) contiene una clausola Handles (Handles Button1.MouseEnter). La parola chiave Handles indica al gestore eventi quali eventi deve gestire.
Per condividere un gestore eventi tra più controlli, è sufficiente aggiungere i nomi dei controlli aggiuntivi e il nome dell'evento che si desidera gestire. Il gestore eventi verrà quindi informato quando si verifica l'evento specificato per uno qualsiasi di tali controlli. Se ad esempio si desidera utilizzare uno stesso gestore eventi per due controlli Button, la clausola Handles da utilizzare sarà simile a quella riportata di seguito.
Handles Button1.MouseEnter, Button2.MouseEnter.
In questo modo è stato creato un singolo metodo per la gestione dell'evento MouseEnter per entrambi i controlli. Per capire come il gestore eventi verifica il controllo che ha generato l'evento, esaminare di nuovo la dichiarazione Method. Questa dichiarazione contiene la clausola ByVal sender As Object, dove la parola chiave Sender indica al gestore eventi l'oggetto (in questo caso il controllo) che ha generato l'evento.
Procedura
Per condividere un gestore eventi
Aprire il progetto EventHandler creato nella lezione precedente. Se questo progetto non è stato salvato, tornare prima alla lezione precedente Interazione con l'utente: creazione di un gestore eventi e completare le procedure indicate.
In Esplora soluzioni selezionare Form1.vb, quindi scegliere Finestra di progettazione dal menu Visualizza.
Dalla Casella degli strumenti trascinare un altro controllo Button nel form.
Nella finestra Proprietà impostare la proprietà AutoSize su True.
Scegliere Codice dal menu Visualizza per aprire l'editor di codice.
Nella dichiarazione del metodo Button1_MouseEnter (Private Sub Button1_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.MouseEnter) modificare la clausola Handles in Handles Button1.MouseEnter, Button2.MouseEnter.
Nel corpo della dichiarazione dell'evento sostituire il codice esistente con quello riportato di seguito.
If sender.Equals(Button1) Then Button1.Text = "The mouse has entered Button1" Else Button2.Text = "The mouse has entered Button2" End If
Questo codice verifica se il mittente corrisponde a Button1. In caso affermativo, verrà aggiornata la proprietà Text di Button1. In caso contrario, verrà aggiornata la proprietà Text di Button2.
Nella dichiarazione del metodo Button1_MouseLeave modificare la clausola Handles come illustrato di seguito.
Handles Button1.MouseLeave, Button2.MouseLeave.
Nel corpo della dichiarazione dell'evento sostituire il codice esistente con quello riportato di seguito.
sender.Text = "The mouse has left"
In questo caso il codice imposta la proprietà Text del mittente (Button1 o Button2) sulla stessa stringa.
Premere F5 per eseguire l'applicazione.
Quando si posiziona il puntatore del mouse sopra il pulsante, il testo cambierà in The mouse has entered seguito dal nome del pulsante. Quando si allontana il puntatore del mouse dal pulsante, il testo cambierà di nuovo in The mouse has left.
Provare ad aggiungere altri controlli nel form e a modificare le clausole Handles per includerli nella gestione. Non è necessario utilizzare controlli dello stesso tipo.
Passaggi successivi
In questa lezione è stato descritto come condividere un singolo gestore eventi tra più controlli. Nella lezione successiva verrà descritto come utilizzare due nuovi tipi di controlli, CheckBox e RadioButton, per offrire alcune possibilità di scelta agli utenti.
Lezione successiva: Recupero delle scelte dell'utente: utilizzo di caselle di controllo e pulsanti di opzione