UIElement.OnPreviewMouseDown(MouseButtonEventArgs) Метод

Определение

Вызывается, когда необработанное присоединенное перенаправленное событие PreviewMouseDown встречает на своем маршруте элемент, производный от этого класса.Invoked when an unhandled PreviewMouseDown attached routed event reaches an element in its route that is derived from this class. Реализуйте этот метод, чтобы добавить для класса обработчик данного события.Implement this method to add class handling for this event.

protected:
 virtual void OnPreviewMouseDown(System::Windows::Input::MouseButtonEventArgs ^ e);
protected virtual void OnPreviewMouseDown (System.Windows.Input.MouseButtonEventArgs e);
abstract member OnPreviewMouseDown : System.Windows.Input.MouseButtonEventArgs -> unit
override this.OnPreviewMouseDown : System.Windows.Input.MouseButtonEventArgs -> unit
Protected Overridable Sub OnPreviewMouseDown (e As MouseButtonEventArgs)

Параметры

e
MouseButtonEventArgs

Объект класса MouseButtonEventArgs, содержащий данные о событии.The MouseButtonEventArgs that contains the event data. Данные о событии информируют о нажатии одной или нескольких кнопок мыши.The event data reports that one or more mouse buttons were pressed.

Комментарии

Действия кнопок мыши также обрабатываются выделенным диспетчером ввода.Mouse button actions are also handled by a dedicated input manager. Другие функции программирования, основанные на действиях кнопок мыши, например вводе и привязках команд, могут вызывать обработчики для действия, прежде чем оно будет представлено как общее действие кнопки мыши.Other programming features that rely on mouse button actions, such as input and command bindings, might invoke handlers for the action before it is exposed as a general mouse button action. Если эти входные функции системы помечают событие Mouse.PreviewMouseDown как обработанное, OnPreviewMouseDown не вызывается.If these input system features mark the Mouse.PreviewMouseDown event as handled, OnPreviewMouseDown is not invoked.

При использовании этого обработчика класса для пометки события как обработанного вы потенциально повлияет на следующие события: PreviewMouseLeftButtonDown и PreviewMouseRightButtonDown.If you use this class handler to mark the event as handled, you potentially impact the following events: PreviewMouseLeftButtonDown and PreviewMouseRightButtonDown. Любое из этих событий может возникнуть на принимающем элементе при получении Mouse.PreviewMouseDown.Either of these events may be raised on the receiving element when Mouse.PreviewMouseDown is received.

Если пометить это событие как обработанное при обработке класса, подсобытия по-прежнему вызываются; Однако они передают обработанное состояние в данных события.If you mark this event as handled in class handling, subevents are still raised; however, they pass the handled state in the event data. Если событие обрабатывается в процессе обработки класса, обработчики экземпляров для подсобытий не вызываются, если только вы явно не используете AddHandler(RoutedEvent, Delegate, Boolean) с handledEventsToo true, чтобы присоединить обработчики.If the event is handled in class handling, instance handlers for the subevents are not invoked unless you explicitly use AddHandler(RoutedEvent, Delegate, Boolean) with handledEventsToo true in order to attach handlers. Обработчики классов также не вызываются, если эти обработчики класса не зарегистрированы в сигнатуре RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) с handledEventsToo true.Class handlers also are not invoked unless those class handlers were registered with the RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) signature with handledEventsToo true. Обрабатывая OnPreviewMouseDown, вы подразумеваете, что обработка класса учитывает все возможные действия нажатия кнопки мыши.By handling OnPreviewMouseDown, you are implying that your class handling accounted for all possible mouse button down actions. Такое поведение может быть нежелательным; Поэтому следует соблюдать осторожность при использовании этого виртуального метода для пометки событий как обработанных.This behavior might be unwanted; Therefore, use caution when you use this virtual method to mark events as handled.

Каждое из прямых событий, связанных с кнопками, также имеет виртуальный метод *. Рассмотрите возможность более адекватного переопределения обработчиков классов, связанных с кнопками.Each of the button-specific direct events also has a virtual On* method; consider whether overriding these button-specific class handlers might be more appropriate.

Этот метод не имеет реализации по умолчанию.This method has no default implementation. Поскольку промежуточный класс в наследовании может реализовать этот метод, рекомендуется вызвать базовую реализацию в реализации.Because an intermediate class in the inheritance might implement this method, we recommend that you call the base implementation in your implementation.

Назначение этого метода аналогично шаблону событий среда CLRcommon language runtime (CLR) для методов *: Этот метод предоставляет средства для обработки соответствующего события из производных классов путем установки обработчика класса вместо обработчика экземпляра.The purpose of this method is similar to the среда CLRcommon language runtime (CLR) event pattern On* methods: this method provides the means to handle the matching event from derived classes by establishing a class handler instead of an instance handler. В этом случае сопоставленное событие является перенаправленным событием.In this case the matching event is a routed event. Шаблон реализации методов On * отличается для перенаправленных событий, так как перенаправленное событие может быть вызвано дочерним элементом, который не обязательно должен вызывать обработчики.The implementation pattern of the On* methods is different for routed events because a routed event can be raised by a child element, which is not necessarily the element that will invoke handlers. Поэтому в реализации необходимо изучить свойства источника данных события.Therefore, your implementation needs to examine the source properties of the event data. В большинстве случаев не следует пытаться повторно вызывать событие.It should not try to reraise the event in most cases.

Переопределяя этот метод или зарегистрировав обработчики класса RegisterClassHandler, производные классы UIElement могут вызывать закрытые методы обработчика класса, когда событие получено в маршруте события.Either by overriding this method or by registering class handlers with RegisterClassHandler, derived classes of UIElement can call private class handler methods when the event is received along the event route. Одним из сценариев, где требуется обработка класса, является управление данными события и пометка перенаправленного события как обработанного.One scenario where class handling is appropriate is to manipulate the event data and mark the routed event as handled. Другой сценарий, специально предназначенный для событий предварительного просмотра, заключается в том, чтобы пометить их как обработанные, чтобы соответствующие обработчики класса восходящей маршрутизации не вызывались.Another scenario that is specifically for Preview events is to mark them handled so that the matching bubbling class handlers are not invoked.

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

Дополнительно