信息
您所需的主题如下所示。但此主题未包含在此库中。

UIElement.OnMouseDown 方法

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

命名空间:  System.Windows
程序集:  PresentationCore(在 PresentationCore.dll 中)

protected virtual void OnMouseDown(
	MouseButtonEventArgs e
)

参数

e
类型:System.Windows.Input.MouseButtonEventArgs
包含事件数据的 MouseButtonEventArgs 此事件数据报告有关按下的鼠标按钮和已处理状态的详细信息。

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

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

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

此外,每个特定于按钮的直接事件都有一个虚拟 On* 方法;因此,可能更应该考虑是否重写这些特定于按钮的类处理程序。

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

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

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

.NET Framework

受以下版本支持:4.5、4、3.5、3.0

.NET Framework Client Profile

受以下版本支持:4、3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008(不支持服务器核心角色), Windows Server 2008 R2(支持带 SP1 或更高版本的服务器核心角色;不支持 Itanium)

并不是.NET Framework 对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求.

社区附加资源

显示:
© 2014 Microsoft