UIElement.AddHandler Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Добавляет обработчик перенаправленного события для указанного перенаправленного события, помещая этот обработчик в коллекцию обработчиков текущего элемента.
Перегрузки
AddHandler(RoutedEvent, Delegate) |
Добавляет обработчик перенаправленного события для указанного перенаправленного события, помещая этот обработчик в коллекцию обработчиков текущего элемента. |
AddHandler(RoutedEvent, Delegate, Boolean) |
Добавляет обработчик перенаправленного события для указанного перенаправленного события, помещая этот обработчик в коллекцию обработчиков текущего элемента. Укажите |
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 события на странице, который присоединяет определенный обработчик к одному из именованных элементов на странице с помощью handledEventsToo
true
. Этот обработчик будет вызываться, даже если другой элемент маршрута помечает общие данные события как обрабатываемые до достижения элемента обработки в маршруте.
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 пользовательского перенаправленного события.
Применяется к
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по