Come gestire un evento di controllo (Windows Form .NET)
Gli eventi per i controlli (e per i moduli) vengono in genere impostati tramite Visual Studio Visual Designer per Windows Form. L'impostazione di un evento tramite Visual Designer è nota come gestione di un evento in fase di progettazione. È anche possibile gestire gli eventi in modo dinamico nel codice, noti come gestione degli eventi in fase di esecuzione. Un evento creato in fase di esecuzione consente di connettere i gestori eventi in modo dinamico in base alle operazioni attualmente eseguite dall'app.
Gestire un evento - Finestra di progettazione
In Visual Studio usare Progettazione visiva per gestire i gestori per gli eventi di controllo. Progettazione visiva genererà il codice del gestore e lo aggiungerà automaticamente all'evento.
Impostare il gestore
Usare il riquadro Proprietà per aggiungere o impostare il gestore di un evento:
Aprire Progettazione oggetti visivi del form contenente il controllo da modificare.
Selezionare il controllo .
Modificare la modalità riquadro Proprietà in Eventi premendo il pulsante eventi ( ).
Trovare l'evento a cui si vuole aggiungere un gestore, ad esempio l'evento Click :
Esegui una delle operazioni seguenti:
Fare doppio clic sull'evento per generare un nuovo gestore, è vuoto se non viene assegnato alcun gestore. Se non è vuoto, questa azione apre il codice per il modulo e passa al gestore esistente.
Usare la casella di selezione ( ) per scegliere un gestore esistente.
Nella casella di selezione verranno elencati tutti i metodi con una firma del metodo compatibile per il gestore eventi.
Cancellare il gestore
Per rimuovere un gestore eventi, non è possibile eliminare semplicemente il codice del gestore presente nel file code-behind del modulo, ma viene comunque fatto riferimento all'evento. Usare il riquadro Proprietà per rimuovere il gestore di un evento:
Aprire Progettazione oggetti visivi del form contenente il controllo da modificare.
Selezionare il controllo .
Modificare la modalità riquadro Proprietà in Eventi premendo il pulsante eventi ( ).
Trovare l'evento contenente il gestore da rimuovere, ad esempio, l'evento Click :
Fare clic con il pulsante destro del mouse sull'evento e scegliere Reimposta.
Gestire un evento - codice
In genere si aggiungono gestori eventi ai controlli in fase di progettazione tramite Progettazione visiva. È tuttavia possibile creare controlli in fase di esecuzione, che richiede l'aggiunta di gestori eventi nel codice. L'aggiunta di gestori nel codice offre anche la possibilità di aggiungere più gestori allo stesso evento.
Aggiungere un gestore
Nell'esempio seguente viene illustrato come creare un controllo e aggiungere un gestore eventi. Questo controllo viene creato nel Button.Click
gestore eventi un pulsante diverso. Quando si preme Button1 . Il codice sposta e ridimensiona un nuovo pulsante. L'evento del Click
nuovo pulsante viene gestito dal MyNewButton_Click
metodo . Per visualizzare il nuovo pulsante, viene aggiunto alla raccolta del Controls
modulo. È disponibile anche il codice per rimuovere il Button1.Click
gestore dell'evento, illustrato nella sezione Rimuovere il gestore .
private void button1_Click(object sender, EventArgs e)
{
// Create and add the button
Button myNewButton = new()
{
Location = new Point(10, 10),
Size = new Size(120, 25),
Text = "Do work"
};
// Handle the Click event for the new button
myNewButton.Click += MyNewButton_Click;
this.Controls.Add(myNewButton);
// Remove this button handler so the user cannot do this twice
button1.Click -= button1_Click;
}
private void MyNewButton_Click(object sender, EventArgs e)
{
}
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'Create and add the button
Dim myNewButton As New Button() With {.Location = New Point(10, 10),
.Size = New Size(120, 25),
.Text = "Do work"}
'Handle the Click event for the new button
AddHandler myNewButton.Click, AddressOf MyNewButton_Click
Me.Controls.Add(myNewButton)
'Remove this button handler so the user cannot do this twice
RemoveHandler Button1.Click, AddressOf Button1_Click
End Sub
Private Sub MyNewButton_Click(sender As Object, e As EventArgs)
End Sub
Per eseguire questo codice, eseguire le operazioni seguenti in un modulo con Visual Studio Visual Designer:
- Aggiungere un nuovo pulsante al modulo e denominarlo Button1.
- Modificare la modalità riquadro Proprietà in Eventi premendo il pulsante dell'evento ( ).
- Fare doppio clic sull'evento Click per generare un gestore. Questa azione apre la finestra del codice e genera un metodo vuoto
Button1_Click
. - Sostituire il codice del metodo con il codice precedente.
Per altre informazioni sugli eventi C#, vedere Eventi (C#) Per altre informazioni sugli eventi di Visual Basic, vedere Eventi (Visual Basic)
Rimuovere il gestore
La sezione Aggiungi un gestore ha usato un codice per illustrare l'aggiunta di un gestore. Tale codice conteneva anche una chiamata per rimuovere un gestore:
button1.Click -= button1_Click;
RemoveHandler Button1.Click, AddressOf Button1_Click
Questa sintassi può essere utilizzata per rimuovere qualsiasi gestore eventi da qualsiasi evento.
Per altre informazioni sugli eventi C#, vedere Eventi (C#) Per altre informazioni sugli eventi di Visual Basic, vedere Eventi (Visual Basic)
Come usare più eventi con lo stesso gestore
Con il riquadro Proprietà di Visual Studio Visual Designer è possibile selezionare lo stesso gestore già in uso da un evento diverso. Seguire le istruzioni nella sezione Imposta il gestore per selezionare un gestore esistente invece di crearne uno nuovo.
In C# il gestore viene associato all'evento di un controllo nel codice della finestra di progettazione del modulo, che è stato modificato tramite Visual Designer. Per altre informazioni sugli eventi C#, vedere Eventi (C#)
Visual Basic
In Visual Basic il gestore viene associato all'evento di un controllo nel file code-behind del modulo, in cui viene dichiarato il codice del gestore eventi. È possibile aggiungere più Handles
parole chiave al codice del gestore eventi per usarlo con più eventi. Progettazione visiva genererà automaticamente la Handles
parola chiave e la aggiungerà al gestore eventi. Tuttavia, è possibile eseguire facilmente questa operazione a qualsiasi evento e gestore eventi del controllo, purché la firma del metodo del gestore corrisponda all'evento. Per altre informazioni sugli eventi di Visual Basic, vedere Eventi (Visual Basic)
Questo codice illustra come usare lo stesso metodo come gestore per due eventi diversi Button.Click
:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click, Button2.Click
'Do some work to handle the events
End Sub
Vedi anche
.NET Desktop feedback