Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C#WPF中,如何识别触摸屏上的输入指针是鼠标还是手指?_C#_Wpf_Silverlight_C# 4.0_Touch - Fatal编程技术网

在C#WPF中,如何识别触摸屏上的输入指针是鼠标还是手指?

在C#WPF中,如何识别触摸屏上的输入指针是鼠标还是手指?,c#,wpf,silverlight,c#-4.0,touch,C#,Wpf,Silverlight,C# 4.0,Touch,在我的应用程序中,我希望处理鼠标和触摸事件以获得平滑。但在这里,我允许我的代码(如鼠标事件)仅在输入指针为鼠标时有效,而触摸事件仅在输入指针为触摸屏上的手指时有效(如触摸设备上的Outlook 2013)。如何做到这一点?或者,如果有任何可用于识别输入指针的内置事件,请告诉我 请向我提供您的建议。WPF提供不同类型的输入事件(例如:MouseLeftButtonDown,StylusDown,触地)。所有这些事件都有关联的事件参数,允许您访问导致交互的输入设备(例如:MouseEventArgs

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


请向我提供您的建议。

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:我在回答中添加了一些信息。希望有帮助:)