Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.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# 如何支持MouseUp、MouseDown和MouseMove事件,而不考虑使用鼠标或触摸_C#_Wpf_Events_Touch_Mouse - Fatal编程技术网

C# 如何支持MouseUp、MouseDown和MouseMove事件,而不考虑使用鼠标或触摸

C# 如何支持MouseUp、MouseDown和MouseMove事件,而不考虑使用鼠标或触摸,c#,wpf,events,touch,mouse,C#,Wpf,Events,Touch,Mouse,我正在尝试制作一个WPF应用程序,它将同时支持鼠标和触摸。在开发过程中,我只使用了鼠标,但在使用触摸屏进行测试后,我遇到了一些具体问题。。在鼠标按下事件中,我启动了一个Dispatchermer,当Dispatchermer勾选时,一些重要的代码将被执行。但是,问题是,在MouseUp上,我正在停止计时器,因为需要用户按住它直到计时器滴答作响。当使用触摸设备时,鼠标向下事件后会立即触发MouseUp事件,即使手指实际上尚未被提起。。如何在不太修改代码的情况下规避此问题 我已尝试处理预览事件。我尝

我正在尝试制作一个WPF应用程序,它将同时支持鼠标和触摸。在开发过程中,我只使用了鼠标,但在使用触摸屏进行测试后,我遇到了一些具体问题。。在鼠标按下事件中,我启动了一个Dispatchermer,当Dispatchermer勾选时,一些重要的代码将被执行。但是,问题是,在MouseUp上,我正在停止计时器,因为需要用户按住它直到计时器滴答作响。当使用触摸设备时,鼠标向下事件后会立即触发MouseUp事件,即使手指实际上尚未被提起。。如何在不太修改代码的情况下规避此问题

我已尝试处理预览事件。我尝试过复制粘贴助手类,我在类似的报告问题中发现了这些类。我尝试了“Stylus.IsPressAndHoldEnabled”属性。我记得我尝试过的最后一件事是连接触摸事件和鼠标事件,并将它们发送到同一个位置。(请阅读,您必须检查MouseEventArgs的“StylusDevice”属性,但它始终为空,即使在使用触摸屏时也是如此。),我还没能用我试过的任何东西破解它

我没有上面解释过的所有我尝试过的东西的代码,但至少我现在坐在这里:

protected override void OnPreviewMouseMove(MouseEventArgs e) {
  Log.AddEntry("__________ Dashboard : OnPreviewMouseMove");
  InputMove(e);// my Move handling
}


protected override void OnPreviewMouseDown(MouseButtonEventArgs e) {
  Log.AddEntry("__________ Dashboard : OnPreviewMouseDown");
  InputDown(e); // my Down handling
  e.Handled = true;
}


protected override void OnPreviewMouseUp(MouseButtonEventArgs e) {
  Log.AddEntry("__________ Dashboard : OnPreviewMouseUp");
  InputUp(e); // my Up handling
}
我能提供的最后一件事是我在测试中创建的日志。您将能够看到Up事件在Down事件后不久触发。 以下日志在触摸屏上创建。在日志开始的时候,我把手指放在屏幕上,我想在我举起手指之前一定过了一秒钟,因为日志停止了记录

29.04.2019 15:10:02: __________ Dashboard : OnPreviewMouseMove
29.04.2019 15:10:02: __________ Dashboard : OnPreviewMouseDown
29.04.2019 15:10:02: __________ Dashboard : OnPreviewMouseMove
29.04.2019 15:10:02: __________ Dashboard : TIMER STARTED
29.04.2019 15:10:03: __________ Dashboard : OnPreviewMouseMove
29.04.2019 15:10:03: __________ Dashboard : OnPreviewMouseMove
29.04.2019 15:10:03: __________ Dashboard : OnPreviewMouseMove
29.04.2019 15:10:03: __________ Dashboard : OnPreviewMouseMove
29.04.2019 15:10:03: __________ Dashboard : OnPreviewMouseUp
29.04.2019 15:10:03: __________ Dashboard : OnPreviewMouseMove
29.04.2019 15:10:03: __________ Dashboard : TIMER STOPPED
29.04.2019 15:10:03: __________ Dashboard : OnPreviewMouseDown
29.04.2019 15:10:03: __________ Dashboard : OnPreviewMouseMove
29.04.2019 15:10:03: __________ Dashboard : TIMER STARTED
29.04.2019 15:10:03: __________ Dashboard : OnPreviewMouseUp
29.04.2019 15:10:03: __________ Dashboard : OnPreviewMouseMove
29.04.2019 15:10:03: __________ Dashboard : TIMER STOPPED
29.04.2019 15:10:03: __________ Dashboard : OnPreviewMouseMove
以下日志是使用鼠标创建的(相同的过程,注意向下和向上事件之间的3秒。与使用触摸时不同,Dispatchermer Tick事件被正确触发):


你在使用触摸事件吗?@Frenchy不,我没有使用触摸事件。你在使用触摸事件吗?@Frenchy不,我没有使用触摸事件。
29.04.2019 15:15:47: __________ Dashboard : OnPreviewMouseDown
29.04.2019 15:15:47: __________ Dashboard : OnPreviewMouseMove
29.04.2019 15:15:47: __________ Dashboard : TIMER STARTED
29.04.2019 15:15:50: __________ Dashboard : OnPreviewMouseUp
29.04.2019 15:15:50: __________ Dashboard : OnPreviewMouseMove
29.04.2019 15:15:50: __________ Dashboard : TIMER STOPPED