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

Комментарии

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

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

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

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

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