Cómo: Agregar un controlador de eventos mediante código

En este ejemplo se muestra cómo agregar un controlador de eventos a un elemento mediante código.

Si desea agregar un controlador de eventos a un elemento XAML, y se ha cargado ya la página de marcado que contiene el elemento, debe agregar el controlador mediante código. Como alternativa, si está construyendo el árbol de elementos para una aplicación mediante código solamente y no se declara ningún elemento mediante XAML, puede llamar a métodos concretos para agregar controladores de eventos al árbol de elementos construido.

Ejemplo

En el ejemplo siguiente se agrega un nuevo Button a una página existente que se define inicialmente en XAML. Un archivo de código subyacente implementa un método de control de eventos y, a continuación, agrega ese método como un nuevo controlador de eventos de Button.

En el ejemplo de C# se utiliza el operador += para asignar un controlador a un evento. Se trata del mismo operador que se utiliza para asignar un controlador en el modelo de control de eventos common language runtime (CLR). Microsoft Visual Basic no admite a este operador para la adición de controladores de eventos. En su lugar, requiere una de estas dos técnicas:

  • Utilice el método AddHandler, junto con un operador AddressOf, para hacer referencia a la implementación del controlador de eventos.

  • Utilice la palabra clave Handles como parte de la definición del controlador de eventos. Esta técnica no se muestra aquí; vea Control de eventos en Visual Basic y 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!!";
    }
NotaNota

Agregar un controlador de eventos en la página XAML analizada inicialmente es mucho más sencillo.Dentro del elemento de objeto donde desea agregar el controlador de eventos, agregue un atributo que coincida con el nombre del evento que desea controlar.A continuación, especifique el valor de ese atributo como el nombre del método de control de eventos que definió en el archivo de código subyacente de la página XAML.Para obtener más información, vea Información general sobre XAML (WPF) o Información general sobre eventos enrutados.

Vea también

Conceptos

Información general sobre eventos enrutados

Otros recursos

Temas "Cómo..." sobre eventos