我正在创建一个Windows窗体应用程序,它有几个可点击的面板,需要触摸屏相当于鼠标向下和向上事件。
当我使用键盘和鼠标进行测试时,事件会被正确触发,应用程序会按预期做出反应。但是,当在触摸屏上进行测试时则不然。唯一可以正常工作的事件是click事件,但我的应用程序需要鼠标按下事件才能持续更新值。
有没有人遇到这样的问题并找到解决方案?
答案 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中处理触摸和手势的示例。