5

我正在创建一个 Windows 窗体应用程序,该应用程序具有几个可点击的面板,这些面板需要相当于鼠标向下和向上事件的触摸屏。

当我使用键盘和鼠标进行测试时,事件会正确触发,并且应用程序会按预期做出反应。但是,在触摸屏上进行测试时,情况并非如此。唯一可以正常工作的事件是单击事件,但我的应用程序需要鼠标按下事件来不断更新值。

有没有人遇到过这样的问题并找到了解决方案?

4

3 回答 3

2

只是做了一点阅读,我认为您需要覆盖 WndProc 并查找 WM_TOUCH 事件。

查看Windows 7 Multitouch .NET 互操作示例库,其中包含有关在 winforms 中处理触摸和手势的示例。

于 2013-04-03T10:49:49.533 回答
2

您必须覆盖 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;
            }
    }
}
于 2020-06-09T09:53:16.767 回答
1

I'm not completely sure about this but, have you tried using a tap event to capture the touch, rather than the click event?

于 2013-04-03T10:44:44.827 回答