Windows窗体触屏事件

本文关键字:事件 窗体 Windows | 更新日期: 2023-09-27 18:07:17

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

当我用键盘和鼠标进行测试时,事件被正确触发,应用程序按预期反应。然而,当在触摸屏上进行测试时,情况并非如此。唯一正确工作的事件是点击事件,但我的应用程序需要一个鼠标下降事件来不断更新一个值。

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

Windows窗体触屏事件

你必须重写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;
            }
    }
}

只是做一点阅读,我认为你需要覆盖WndProc和寻找WM_TOUCH事件。

看一下Windows 7 Multitouch . net互操作示例库,其中有在winforms中处理触摸和手势的示例。

我不完全确定这一点,但是,你有没有尝试使用一个点击事件来捕捉触摸,而不是点击事件?