在C#WPF中,如何识别触摸屏上的输入指针是鼠标还是手指?
在我的应用程序中,我希望处理鼠标和触摸事件以获得平滑。但在这里,我允许我的代码(如鼠标事件)仅在输入指针为鼠标时有效,而触摸事件仅在输入指针为触摸屏上的手指时有效(如触摸设备上的Outlook 2013)。如何做到这一点?或者,如果有任何可用于识别输入指针的内置事件,请告诉我在C#WPF中,如何识别触摸屏上的输入指针是鼠标还是手指?,c#,wpf,silverlight,c#-4.0,touch,C#,Wpf,Silverlight,C# 4.0,Touch,在我的应用程序中,我希望处理鼠标和触摸事件以获得平滑。但在这里,我允许我的代码(如鼠标事件)仅在输入指针为鼠标时有效,而触摸事件仅在输入指针为触摸屏上的手指时有效(如触摸设备上的Outlook 2013)。如何做到这一点?或者,如果有任何可用于识别输入指针的内置事件,请告诉我 请向我提供您的建议。WPF提供不同类型的输入事件(例如:MouseLeftButtonDown,StylusDown,触地)。所有这些事件都有关联的事件参数,允许您访问导致交互的输入设备(例如:MouseEventArgs
请向我提供您的建议。WPF提供不同类型的输入事件(例如:
MouseLeftButtonDown
,StylusDown
,触地
)。所有这些事件都有关联的事件参数,允许您访问导致交互的输入设备(例如:MouseEventArgs.device
,等等)
更新:
Mouse
事件为实际的计算机鼠标触发,并通过类似的手写笔输入。如果您需要识别触摸输入,可以使用触笔的预览
变体
相关事件(例如PreviewStylusButtonDown
)。然后,在相应的TIG事件处理程序中,您可以设置一个全局变量(类型为bool
),指示正在处理触摸输入。通过在鼠标事件处理程序中访问此变量,可以根据输入类型调用代码。
最后,使用此方法时,不要忘记在交互完成后“取消设置”布尔值
或者,您也可以直接将代码放入
StylusButtonDown
的处理程序中,在这种情况下,您需要知道鼠标事件仍在触发。在MouseLeftButtonDown处理程序中:
if (e.StylusDevice != null) {
// Event generated by touch screen
}
else {
// Event generated by mouse
}
这也适用于MouseMove和MouseUp事件。您能更清楚地解释一下吗?在输入完整代码之前,我需要检查事件顶部的条件,因为鼠标和触摸交互都调用了MouseEnter事件。@Muthalagu:我在回答中添加了一些信息。希望有帮助:)