UIElement.AddHandler Método

Definición

Agrega un controlador de eventos enrutado para un evento enrutado especificado, agregando el controlador a la colección de controladores en el elemento actual.

Sobrecargas

AddHandler(RoutedEvent, Delegate)

Agrega un controlador de eventos enrutado para un evento enrutado especificado, agregando el controlador a la colección de controladores en el elemento actual.

AddHandler(RoutedEvent, Delegate, Boolean)

Agrega un controlador de eventos enrutado para un evento enrutado especificado, agregando el controlador a la colección de controladores en el elemento actual. Especifique handledEventsToo como true para que se invoque el controlador proporcionado para el evento enrutado que ya se había marcado como controlado por otro elemento a lo largo de la ruta de eventos.

AddHandler(RoutedEvent, Delegate)

Agrega un controlador de eventos enrutado para un evento enrutado especificado, agregando el controlador a la colección de controladores en el elemento actual.

public:
 virtual void AddHandler(System::Windows::RoutedEvent ^ routedEvent, Delegate ^ handler);
public void AddHandler (System.Windows.RoutedEvent routedEvent, Delegate handler);
abstract member AddHandler : System.Windows.RoutedEvent * Delegate -> unit
override this.AddHandler : System.Windows.RoutedEvent * Delegate -> unit
Public Sub AddHandler (routedEvent As RoutedEvent, handler As Delegate)

Parámetros

routedEvent
RoutedEvent

Identificador del evento enrutado que se va a controlar.

handler
Delegate

Referencia a la implementación del controlador.

Implementaciones

Comentarios

Puede agregar el mismo controlador para el mismo evento varias veces sin generar una excepción. Sin embargo, el controlador se invoca varias veces cuando se controla el evento. Por lo tanto, considere cómo este comportamiento podría tener efectos secundarios que se deben tener en cuenta en la implementación del controlador.

Normalmente, se usa este método para proporcionar la implementación del descriptor de acceso "add" para el patrón de acceso a eventos de Microsoft .NET de un evento enrutado personalizado.

Se aplica a

AddHandler(RoutedEvent, Delegate, Boolean)

Agrega un controlador de eventos enrutado para un evento enrutado especificado, agregando el controlador a la colección de controladores en el elemento actual. Especifique handledEventsToo como true para que se invoque el controlador proporcionado para el evento enrutado que ya se había marcado como controlado por otro elemento a lo largo de la ruta de eventos.

public:
 void AddHandler(System::Windows::RoutedEvent ^ routedEvent, Delegate ^ handler, bool handledEventsToo);
public void AddHandler (System.Windows.RoutedEvent routedEvent, Delegate handler, bool handledEventsToo);
member this.AddHandler : System.Windows.RoutedEvent * Delegate * bool -> unit
Public Sub AddHandler (routedEvent As RoutedEvent, handler As Delegate, handledEventsToo As Boolean)

Parámetros

routedEvent
RoutedEvent

Identificador del evento enrutado que se va a controlar.

handler
Delegate

Referencia a la implementación del controlador.

handledEventsToo
Boolean

true registrar el controlador de forma que se invoque incluso cuando el evento enrutado está marcado como controlado en sus datos de eventos; false registrar el controlador con la condición predeterminada que no se invocará si el evento enrutado ya está marcado como controlado.

El valor predeterminado es false.

No pida de forma rutinaria que vuelva a administrar un evento enrutado.

Ejemplos

En el ejemplo siguiente se implementa un controlador invocado en el evento Initialized de una página que asocia un controlador definido a uno de los elementos con nombre de la página mediante handledEventsTootrue. Este controlador se invocaría incluso si otro elemento a lo largo de la ruta marcara los datos de eventos compartidos como controlado antes de llegar al elemento de control en la ruta.

void PrimeHandledToo(object sender, EventArgs e)
{
    dpanel2.AddHandler(Button.ClickEvent, new RoutedEventHandler(GetHandledToo), true);
}
Private Sub PrimeHandledToo(ByVal sender As Object, ByVal e As EventArgs)
    dpanel2.AddHandler(Button.ClickEvent, New RoutedEventHandler(AddressOf GetHandledToo), True)
End Sub

Comentarios

El procesamiento de eventos de entrada de bajo nivel de forma práctica es una tarea compleja. Muchos controles implementan el comportamiento en el que un determinado evento se marca como controlado y se reemplaza por otro evento más intuitivo. Por lo general, un control solo marcará un evento de entrada de plataforma como controlado si hay alguna intención de diseño para hacerlo. En determinados escenarios, es posible que esas intenciones de diseño no sean lo que requiere su control concreto del evento de entrada. Es para estos escenarios que el registro de controladores con handledEventsToo como true es adecuado. Pero no deberías hacer esto de forma rutinaria. Invocar controladores en respuesta a todos los eventos incluso si se controla complicará su propia lógica de procesamiento de eventos de aplicación. Es posible que vea una disminución del rendimiento si la lógica del controlador es sustancial. Debe reservar el uso de controladores de asociación para eventos ya controlados para situaciones en las que ya se ha detectado durante el proceso de desarrollo que ciertos controles controlan eventos que todavía desea controlar con la lógica de la aplicación.

Otra técnica para evitar el comportamiento de control de clases de determinadas combinaciones de control de eventos es usar la alternativa de vista previa de ese evento. Por ejemplo, si MouseLeftButtonDown está marcado como controlado por el control de clases, es posible que pueda agregar controladores para PreviewMouseLeftButtonDown en su lugar.

Puede agregar el mismo controlador para el mismo evento varias veces sin generar una excepción. Sin embargo, el controlador se invoca varias veces cuando se controla el evento. Por lo tanto, considere cómo este comportamiento podría tener efectos secundarios que se deben tener en cuenta en la implementación del controlador.

Normalmente, se usa este método para proporcionar la implementación del descriptor de acceso "add" para el patrón de acceso a eventos de Microsoft .NET de un evento enrutado personalizado.

Se aplica a