Como adicionar um manipulador de eventos usando código

Esse exemplo mostra como adicionar um manipulador de eventos a um elemento usando código.

Se você quiser adicionar um manipulador de eventos a um elemento XAML e a página de marcação que contém o elemento já tiver sido carregada, adicione o manipulador usando código. Como alternativa, se você estiver criando a árvore de elementos para um aplicativo inteiramente usando código e não declarando nenhum elemento usando XAML, poderá chamar métodos específicos para adicionar manipuladores de eventos à árvore de elementos construída.

Exemplo

O exemplo a seguir adiciona um novo Button a uma página existente que é inicialmente definida em XAML. Um arquivo code-behind implementa um método de manipulador de eventos e, em seguida, adiciona esse método como um novo manipulador de eventos no Button.

O exemplo do C# usa o += operador para atribuir um manipulador a um evento. Esse é o mesmo operador usado para atribuir um manipulador no modelo de manipulação de eventos CLR (Common Language Runtime). Microsoft Visual Basic não oferece suporte a esse operador como um meio de adicionar manipuladores de eventos. Em vez disso, ele requer uma de duas técnicas:

  • Use o AddHandler método, juntamente com um AddressOf operador, para fazer referência à implementação do manipulador de eventos.

  • Use a palavra-chave Handles como parte da definição do manipulador de eventos. Essa técnica não é mostrada aqui. Consulte Manipulação de eventos do 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

Observação

Adicionar um manipulador de eventos na página XAML analisada inicialmente é muito mais simples. Dentro do elemento de objetos ao qual você deseja adicionar o manipulador de eventos, adicione um atributo que corresponde ao nome do evento que você deseja manipular. Em seguida, especifique o valor desse atributo como o nome do método de manipulador de eventos que você definiu no arquivo code-behind da página XAML. Para obter mais informações, consulte XAML no WPF ou Visão geral de eventos roteados.

Confira também