UIElement.OnMouseDown(MouseButtonEventArgs) 方法

定义

当未处理的 MouseDown 附加事件到达其路由中派生自此类的元素时调用。 实现此方法以添加此事件的类处理。

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

参数

e
MouseButtonEventArgs

包含事件数据的 MouseButtonEventArgs。 此事件数据报告有关按下的鼠标按钮和已处理状态的详细信息。

注解

鼠标按钮操作也由专用输入管理器处理。 依赖于鼠标按钮操作的其他编程功能(如输入和命令绑定)可能会在将操作公开为常规鼠标按钮操作之前调用该操作的处理程序。 如果这些输入系统功能将 Mouse.MouseDown 事件标记为已处理,则不会调用 OnMouseDown

如果使用此类处理程序将事件标记为已处理,则可能会影响以下事件:MouseLeftButtonDownMouseRightButtonDown。 收到 Mouse.MouseDown 时,可能会在接收元素上引发其中任一事件。

如果将此事件标记为在类处理中处理,则仍会引发子事件;但是,它们在事件数据中传递已处理的状态。 如果在类处理中处理该事件,则不会调用子事件的实例处理程序,除非显式使用 AddHandler(RoutedEvent, Delegate, Boolean)handledEventsTootrue 来附加处理程序。 除非这些类处理程序使用 RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) 签名注册了 handledEventsTootrue,否则也不会调用类处理程序。 通过处理 OnMouseDown,意味着类处理将考虑所有可能的鼠标按钮向下操作。 此行为可能不需要;因此,使用此虚拟方法将事件标记为已处理时,请谨慎使用。

每个特定于按钮的直接事件还有一个虚拟 On* 方法;请考虑重写这些特定于按钮的类处理程序是否更合适。

此方法没有默认实现。 由于继承中的中间类可能实现此方法,因此建议在实现中调用基实现。

此方法的用途类似于公共语言运行时 (CLR) 事件模式 On* 方法:此方法提供通过建立类处理程序而不是实例处理程序来处理派生类中的匹配事件的方法。 在这种情况下,匹配事件是路由事件。 On* 方法的实现模式对于路由事件是不同的,因为路由事件可由子元素引发,这不一定是将调用处理程序的元素。 因此,实现需要检查事件数据的源属性。 在大多数情况下,它不应尝试重新创建事件。

通过重写此方法或通过向 RegisterClassHandler注册类处理程序,UIElement 的派生类可以在事件路由中接收事件时调用私有类处理程序方法。 类处理适合的一种方案是操作事件数据并将路由事件标记为已处理。

适用于

另请参阅