UIElement.AddHandler Метод

Определение

Добавляет перенаправленный обработчик событий для указанного перенаправленного события, добавив обработчик в коллекцию обработчика текущего элемента.

Перегрузки

AddHandler(RoutedEvent, Delegate)

Добавляет перенаправленный обработчик событий для указанного перенаправленного события, добавив обработчик в коллекцию обработчика текущего элемента.

AddHandler(RoutedEvent, Delegate, Boolean)

Добавляет перенаправленный обработчик событий для указанного перенаправленного события, добавив обработчик в коллекцию обработчика текущего элемента. Укажите handledEventsToo как true для вызова предоставленного обработчика для перенаправленного события, которое уже было отмечено как обработанное другим элементом вдоль маршрута событий.

AddHandler(RoutedEvent, Delegate)

Добавляет перенаправленный обработчик событий для указанного перенаправленного события, добавив обработчик в коллекцию обработчика текущего элемента.

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)

Параметры

routedEvent
RoutedEvent

Идентификатор для обработки перенаправленного события.

handler
Delegate

Ссылка на реализацию обработчика.

Реализации

Комментарии

Вы можете добавить один и тот же обработчик для одного и того же события несколько раз, не вызывая исключения. Однако обработчик фактически вызывается несколько раз при обработке события. Поэтому рассмотрим, как это поведение может иметь побочные эффекты, которые должны быть учтены в реализации обработчика.

Обычно этот метод используется для предоставления реализации метода доступа "add" для шаблона доступа к событиям Microsoft .NET пользовательского перенаправленного события.

Применяется к

AddHandler(RoutedEvent, Delegate, Boolean)

Добавляет перенаправленный обработчик событий для указанного перенаправленного события, добавив обработчик в коллекцию обработчика текущего элемента. Укажите handledEventsToo как true для вызова предоставленного обработчика для перенаправленного события, которое уже было отмечено как обработанное другим элементом вдоль маршрута событий.

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)

Параметры

routedEvent
RoutedEvent

Идентификатор для обработки перенаправленного события.

handler
Delegate

Ссылка на реализацию обработчика.

handledEventsToo
Boolean

true регистрировать обработчик таким образом, что он вызывается, даже если перенаправленное событие помечается в его данных о событиях; false, чтобы зарегистрировать обработчик с условием по умолчанию, которое не будет вызываться, если перенаправленное событие уже помечено.

Значение по умолчанию — false.

Обычно не запрашивайте перенаправлять перенаправленное событие.

Примеры

В следующем примере реализуется обработчик, вызываемый событием Initialized на странице, которая присоединяет определенный обработчик к одному из именованных элементов на странице с помощью handledEventsTootrue. Этот обработчик вызывается даже в том случае, если другой элемент по маршруту помечает общие данные события, которые обрабатываются перед достижением элемента обработки в маршруте.

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

Комментарии

Обработка низкоуровневых событий ввода практически является сложной задачей. Многие элементы управления реализуют поведение, в котором определенное событие помечается как обработанное, и заменяется другим более интуитивно понятным событием. Как правило, элемент управления помечает только событие ввода платформы как обработанное, если для этого существует некоторое намерение разработки. В некоторых сценариях эти намерения проектирования могут не быть тем, что требуется для конкретной обработки события ввода. Для этих сценариев регистрирование обработчиков с помощью handledEventsToo в соответствии с true подходит. Но вы не должны делать это регулярно. Вызов обработчиков в ответ на все события, даже если обработка будет усложнять собственную логику обработки событий приложения. Если логика обработчика является существенной, может возникнуть снижение производительности. Следует зарезервировать использование обработчиков подключения для уже обработанных событий для ситуаций, когда вы уже обнаружили во время процесса разработки, которые некоторые элементы управления обрабатывают события, которые по-прежнему нужно обрабатывать с помощью логики приложения.

Другой способ предотвращения поведения обработки класса определенных сочетаний элементов управления событиями — использовать альтернативу предварительной версии этого события. Например, если MouseLeftButtonDown помечается обработкой классов, можно добавить обработчики для PreviewMouseLeftButtonDown.

Вы можете добавить один и тот же обработчик для одного и того же события несколько раз, не вызывая исключения. Однако обработчик фактически вызывается несколько раз при обработке события. Поэтому рассмотрим, как это поведение может иметь побочные эффекты, которые должны быть учтены в реализации обработчика.

Обычно этот метод используется для предоставления реализации метода доступа "add" для шаблона доступа к событиям Microsoft .NET пользовательского перенаправленного события.

Применяется к