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.

Importante

La documentazione di Desktop Guide per .NET 7 e .NET 6 è in fase di costruzione.

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:

  1. Aprire Progettazione oggetti visivi del form contenente il controllo da modificare.

  2. Selezionare il controllo .

  3. Modificare la modalità riquadro Proprietà in Eventi premendo il pulsante eventi ( ).

  4. Trovare l'evento a cui si vuole aggiungere un gestore, ad esempio l'evento Click :

    Visual Studio properties pane shown with the events mode enabled and the click event.

  5. Eseguire 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:

  1. Aprire Progettazione oggetti visivi del form contenente il controllo da modificare.

  2. Selezionare il controllo .

  3. Modificare la modalità riquadro Proprietà in Eventi premendo il pulsante eventi ( ).

  4. Trovare l'evento contenente il gestore da rimuovere, ad esempio, l'evento Click :

    Visual Studio properties pane shown with the events mode enabled and the click event.

  5. 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:

  1. Aggiungere un nuovo pulsante al modulo e denominarlo Button1.
  2. Modificare la modalità riquadro Proprietà in Eventi premendo il pulsante dell'evento ( ).
  3. Fare doppio clic sull'evento Click per generare un gestore. Questa azione apre la finestra del codice e genera un metodo vuoto Button1_Click .
  4. 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