Windows窗体触发事件

时间:2013-04-03 10:39:33

标签: c# winforms touch

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

当我使用键盘和鼠标进行测试时,事件会被正确触发,应用程序会按预期做出反应。但是,当在触摸屏上进行测试时则不然。唯一可以正常工作的事件是click事件,但我的应用程序需要鼠标按下事件才能持续更新值。

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

3 个答案:

答案 0 :(得分: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;
            }
    }
}

答案 1 :(得分:1)

我对此并不完全确定,但您是否尝试使用点击事件来捕捉触摸,而不是点击事件?

答案 2 :(得分:1)

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

查看Windows 7 Multitouch .NET Interop Sample Library,其中有关于在winforms中处理触摸和手势的示例。