我正在创建一个 Windows 窗体应用程序,该应用程序具有几个可点击的面板,这些面板需要相当于鼠标向下和向上事件的触摸屏。
当我使用键盘和鼠标进行测试时,事件会正确触发,并且应用程序会按预期做出反应。但是,在触摸屏上进行测试时,情况并非如此。唯一可以正常工作的事件是单击事件,但我的应用程序需要鼠标按下事件来不断更新值。
有没有人遇到过这样的问题并找到了解决方案?
只是做了一点阅读,我认为您需要覆盖 WndProc 并查找 WM_TOUCH 事件。
查看Windows 7 Multitouch .NET 互操作示例库,其中包含有关在 winforms 中处理触摸和手势的示例。
您必须覆盖 WndProc,捕获消息并手动启动 MouseDown 和 MouseUp 事件
public const int WM_POINTERDOWN = 0x246;
public const int WM_POINTERUP = 0x247;
[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
protected override void WndProc(ref Message m)
{
base.WndProc(m);
switch (m.Msg)
{
case WM_POINTERDOWN:
{
MouseEventArgs args = new MouseEventArgs(MouseButtons.Left, 1, this.MousePosition.X, this.MousePosition.Y, 0);
MouseDown(this, args);
break;
}
case WM_POINTERUP:
{
MouseEventArgs args = new MouseEventArgs(MouseButtons.Left, 1, this.MousePosition.X, this.MousePosition.Y, 0);
MouseUp(this, args);
break;
}
}
}
I'm not completely sure about this but, have you tried using a tap event to capture the touch, rather than the click event?