Прочитать на английском

Поделиться через


Mouse.MouseDown Присоединенное событие

Определение

Происходит, когда пользователь отпускает любую кнопку мыши.

C#
see AddMouseDownHandler, and RemoveMouseDownHandler

Комментарии

Чтобы определить, какая кнопка мыши была подавлена, проверка ChangedButton свойство в переданном MouseButtonEventArgs обработчику.

Это присоединенное событие. WPF реализует присоединенные события в виде перенаправленных событий. Присоединенные события по сути являются концепцией языка XAML для ссылок на события, которые могут обрабатываться в объектах, которые не определяют это событие. WpF расширяет возможности, также позволяя событию проходить по маршруту. Присоединенные события не имеют синтаксиса прямой обработки в коде; Для присоединения обработчиков для перенаправленного события в коде используется назначенный метод Add*Handler. Дополнительные сведения см. в разделе Общие сведения о присоединенных событиях.

Платформа Windows Presentation Foundation (WPF) основана на этом присоединенном событии, отображая его как два разных события среды CLR в UIElement и ContentElement: MouseLeftButtonDown и MouseRightButtonDown. Эти реализации обрабатывают базовое MouseDown событие и считывают аргументы события, чтобы определить, была ли задействована левая или правая кнопка мыши. Для мыши с тремя кнопками центральная кнопка не поддерживает события на уровне платформы. Следует использовать MouseDown событие и проверка MiddleButton состояние в аргументах события.

Важно!

Некоторые производные ContentElement классы, имеющие поведение, подобное управлению, например , Hyperlinkмогут иметь присущую обработку классов для событий кнопки мыши. Событие вниз левой кнопки мыши является наиболее вероятным событием для обработки класса в элементе управления. Обработка класса часто помечает событие базового Mouse класса как обработанное. После того как событие помечено как обработанное, другие обработчики экземпляров, присоединенные к данному элементу, обычно не вызываются. Любые другие обработчики классов или экземпляров, присоединенные к элементам в восходящем направлении к корню в дереве пользовательского интерфейса, также обычно не вызываются.

Вы можете устранить проблему, описанную в предыдущем важном примечании, и по-прежнему получать MouseDown события для событий нажатия левой кнопки мыши в производном классе, который имеет обработку класса, с помощью любого из следующих решений:

  • Присоединение PreviewMouseDown обработчиков для события, которое не помечается как обрабатываемое элементами управления. Обратите внимание, что так как это событие является предварительным просмотром, маршрут начинается в корне и туннелируется до элемента управления .

  • Зарегистрируйте обработчик в элементе управления процедурно, вызвав AddHandler и выбрав параметр сигнатуры, который позволяет обработчикам прослушивать события, даже если они уже помечены как обработанные в перенаправленных данных событий.

Для перенаправленных событий, связанных с мышью, будьте осторожны с тем, как и когда вы помечаете их обработку. Трудность при принятии соответствующих решений о том, следует ли также информировать родительские элементы о том или ином действии мыши, на самом деле заключается в том, что платформа WPF выбрала модель отображения базового события маршрутизации мыши в качестве событий CLR по маршруту. Аналогичные проблемы существуют и с событиями туннелирования мыши. Следует ли обрабатывать событие и не обрабатывать его дальнейшими дочерними элементами по отношению к источнику, и как это повлияет на создание элемента управления, в котором элементы создания могут ожидать поведения мыши?

Сведения о маршрутизируемом событии

Поле идентификатора MouseDownEvent
Стратегия маршрутизации Восходящей
Делегат MouseButtonEventHandler
  • Соответствующее событие туннелирования — PreviewMouseDown.

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

Продукт Версии
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9