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
.NET Desktop feedback