Windows窗体触屏事件
本文关键字:事件 窗体 Windows | 更新日期: 2023-09-27 18:07:17
我正在创建一个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中处理触摸和手势的示例。
我不完全确定这一点,但是,你有没有尝试使用一个点击事件来捕捉触摸,而不是点击事件?