Procedura: aggiungere un gestore eventi mediante codice

Aggiornamento: novembre 2007

In questo esempio viene illustrato come aggiungere un gestore eventi a un elemento mediante codice.

Se si desidera aggiungere un gestore eventi a un elemento XAML e la pagina del markup che contiene l'elemento è già stata caricata, è necessario aggiungere il gestore mediante codice. In alternativa, se si sta costruendo la struttura ad albero dell'elemento per un'applicazione interamente mediante codice senza dichiarare alcun elemento utilizzando XAML, è possibile chiamare metodi specifici per aggiungere gestori eventi alla struttura ad albero dell'elemento costruita.

Esempio

Nell'esempio riportato di seguito viene aggiunto un nuovo oggetto Button a una pagina esistente definita inizialmente in XAML. Un file code-behind implementa un metodo del gestore eventi, quindi aggiunge tale metodo come nuovo gestore eventi in Button.

Nell'esempio di C# viene utilizzato l'operatore += per assegnare un gestore a un evento. Si tratta dello stesso operatore utilizzato per assegnare un gestore nel modello di gestione eventi Common Language Runtime (CLR). Microsoft Visual Basic non supporta questo operatore come mezzo per l'aggiunta di gestori eventi. Richiede invece una delle due tecniche seguenti:

  • Utilizzare il metodo AddHandler, con un operatore AddressOf, per fare riferimento all'implementazione del gestore eventi.

  • Utilizzare la parola chiave Handles come parte della definizione del gestore eventi. Questa tecnica non viene illustrata in questo argomento; vedere Visual Basic e la gestione degli eventi WPF.

<TextBlock Name="text1">Start by clicking the button below</TextBlock>
<Button Name="b1" Click="MakeButton">Make new button and add handler to it</Button>
Public Partial Class RoutedEventAddRemoveHandler
    Private Sub MakeButton(ByVal sender As Object, ByVal e As RoutedEventArgs)
        Dim b2 As Button = New Button()
        b2.Content = "New Button"
        AddHandler b2.Click, AddressOf Onb2Click
        root.Children.Insert(root.Children.Count, b2)
        DockPanel.SetDock(b2, Dock.Top)
        text1.Text = "Now click the second button..."
        b1.IsEnabled = False
    End Sub
    Private Sub Onb2Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
        text1.Text = "New Button (b2) Was Clicked!!"
    End Sub
public partial class RoutedEventAddRemoveHandler {
    void MakeButton(object sender, RoutedEventArgs e)
    {
        Button b2 = new Button();
        b2.Content = "New Button";
        // Associate event handler to the button. You can remove the event 
        // handler using "-=" syntax rather than "+=".
        b2.Click  += new RoutedEventHandler(Onb2Click);
        root.Children.Insert(root.Children.Count, b2);
        DockPanel.SetDock(b2, Dock.Top);
        text1.Text = "Now click the second button...";
        b1.IsEnabled = false;
    }
    void Onb2Click(object sender, RoutedEventArgs e)
    {
        text1.Text = "New Button (b2) Was Clicked!!";
    }

Nota

L'aggiunta di un gestore eventi nella pagina XAML inizialmente analizzata è molto più semplice. All'interno dell'elemento oggetto a cui si desidera aggiungere il gestore eventi, aggiungere un attributo che corrisponda al nome dell'evento da gestire. Specificare quindi il valore di tale attributo come nome del metodo del gestore eventi definito nel file code-behind della pagina XAML. Per ulteriori informazioni, vedere Cenni preliminari su XAML o Cenni preliminari sugli eventi indirizzati.

Per l'esempio completo, vedere Esempio di aggiunta di un gestore eventi.

Vedere anche

Attività

Esempio di aggiunta di un gestore eventi

Concetti

Cenni preliminari sugli eventi indirizzati

Altre risorse

Procedure relative agli eventi

Esempi di eventi