在我的应用程序中,我想同时处理鼠标和触摸事件以获得平滑度。但是在这里我允许我的代码(例如鼠标事件)仅在输入指针为鼠标时才有效,而触摸事件仅在输入指针为触摸屏上的手指时才有效(如触摸设备上的 Outlook 2013)。如何做到这一点?或者如果有任何内置事件可用于识别输入指针,请告诉我。
请向我提供您的建议。
在我的应用程序中,我想同时处理鼠标和触摸事件以获得平滑度。但是在这里我允许我的代码(例如鼠标事件)仅在输入指针为鼠标时才有效,而触摸事件仅在输入指针为触摸屏上的手指时才有效(如触摸设备上的 Outlook 2013)。如何做到这一点?或者如果有任何内置事件可用于识别输入指针,请告诉我。
请向我提供您的建议。
WPF 提供不同类型的输入事件(例如:MouseLeftButtonDown
、、、StylusDown
)TouchDown
。所有这些事件都有相关的事件参数,让您可以访问导致交互的输入设备(例如:MouseEventArgs.Device
等)。
更新:
这些Mouse
事件会针对实际的计算机鼠标触发并由手写笔输入。如果您需要识别触摸输入,您可以利用相关事件的Preview
变体Stylus
(例如PreviewStylusButtonDown
)。然后在对应的事件处理程序中,您可以设置一个全局变量(类型为bool
),指示正在处理触摸输入。通过在鼠标事件处理程序中访问此变量,您可以根据输入类型调用代码。Boolean
最后,在使用这种方法时,不要忘记在交互完成时“取消设置” 。
或者,您也可以直接将代码放在 的处理程序中StylusButtonDown
,在这种情况下,您需要注意鼠标事件仍在被触发。
在您的 MouseLeftButtonDown 处理程序中:
if (e.StylusDevice != null) {
// Event generated by touch screen
}
else {
// Event generated by mouse
}
这也适用于 MouseMove、MouseUp 事件。