按下并释放触摸屏上的快速检测按钮

Fast detect button pressed and released on Touch screen

在我的 c# windows 表单代码中,我想检测按下按钮(并执行一个操作)和释放按钮(并执行另一个操作)的时间。

我知道 MouseDown 和 MouseUp 事件的存在,在 Windows XP 之前一切都很好。

问题现在出现在 Windows7 和电容式触摸屏上,当 Microsoft 引入手势和 "PressAndHold" 功能时:MouseDown 事件在用户触摸屏幕几秒钟后收到。 (N.B。使用鼠标一切正常)。

如何在收到 MouseDown 事件之前避免这种恼人的延迟?

我已经尝试使用 GlobalAddAtom("MicrosoftTabletPenServiceProperty") 并且我有一点改变:我不再收到 RightButton,我收到了 LeftButton,但总是在相同的时间后。

我也尝试使用 if (MouseButtons == MouseButtons.Left) 的 MouseHover 事件但没有成功(它仅适用于鼠标,不适用于触摸)。

N.B。我需要为表单中的其他控件启用手势和按住功能。

您尝试过使用 Control.Click Event 吗?

我想我在 Windows 7 touch:

上找到了方法

我必须禁用 PressAndHold 并将按钮注册为触摸,因此我几乎立即收到该按钮的 MouseDown 事件,为所有其他控件保留手势。

TogglePressAndHold(btnMoveUp.Handle, false);

RegisterTouchWindow(btnMoveUp.Handle, 0);

对于第一个功能,请参阅这篇 MSDN 文章:https://msdn.microsoft.com/en-us/library/ms812373.aspx

RegisterTouchWindow 是一个User32.dll函数

希望能对别人有所帮助。让我知道它是否也适用于其他平台。