0

在我的应用程序中,我想同时处理鼠标和触摸事件以获得平滑度。但是在这里我允许我的代码(例如鼠标事件)仅在输入指针为鼠标时才有效,而触摸事件仅在输入指针为触摸屏上的手指时才有效(如触摸设备上的 Outlook 2013)。如何做到这一点?或者如果有任何内置事件可用于识别输入指针,请告诉我。

请向我提供您的建议。

4

2 回答 2

1

WPF 提供不同类型的输入事件(例如:MouseLeftButtonDown、、、StylusDownTouchDown。所有这些事件都有相关的事件参数,让您可以访问导致交互的输入设备(例如:MouseEventArgs.Device等)。

更新:

这些Mouse事件会针对实际的计算机鼠标触发并由手写笔输入。如果您需要识别触摸输入,您可以利用相关事件的Preview变体Stylus(例如PreviewStylusButtonDown)。然后在对应的事件处理程序中,您可以设置一个全局变量(类型为bool),指示正在处理触摸输入。通过在鼠标事件处理程序中访问此变量,您可以根据输入类型调用代码。Boolean最后,在使用这种方法时,不要忘记在交互完成时“取消设置” 。

或者,您也可以直接将代码放在 的处理程序中StylusButtonDown,在这种情况下,您需要注意鼠标事件仍在被触发。

于 2013-11-05T10:26:12.297 回答
0

在您的 MouseLeftButtonDown 处理程序中:

if (e.StylusDevice != null) {
    // Event generated by touch screen
}
else {
    // Event generated by mouse
}

这也适用于 MouseMove、MouseUp 事件。

于 2020-05-18T08:22:50.970 回答