Share via


Procedura: aggiungere un gestore eventi mediante codice

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

Se vuoi aggiungere un gestore eventi a un elemento XAML e la pagina di markup che contiene l'elemento è già stata caricata, devi aggiungere il gestore usando il codice. In alternativa, se stai creando l'albero degli elementi per un'applicazione interamente usando codice e non dichiarando elementi usando XAML, puoi chiamare metodi specifici per aggiungere gestori eventi all'albero degli elementi costruito.

Esempio

Nell'esempio seguente viene aggiunto un nuovo Button oggetto a una pagina esistente definita inizialmente in XAML. Un file code-behind implementa un metodo del gestore eventi e quindi lo aggiunge come nuovo gestore eventi in Button.

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

  • Usare il AddHandler metodo , insieme a un AddressOf operatore , per fare riferimento all'implementazione del gestore eventi.

  • Usare la Handles parola chiave come parte della definizione del gestore eventi. Questa tecnica non è illustrata qui; vedere Gestione degli eventi di Visual Basic e 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 {
    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!!";
    }
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

Nota

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

Vedi anche