我正在创建一个Windows Forms应用程序,该应用程序具有几个可单击的面板,这些面板需要等效于鼠标按下和按下事件的触摸屏。
[当我使用键盘和鼠标进行测试时,事件将正确触发,并且应用程序将按预期进行响应。但是,在触摸屏上进行测试时,不是这样。唯一可以正常工作的事件是click事件,但我的应用程序需要使用鼠标按下事件才能连续更新值。
有人遇到这样的问题并找到了解决方案吗?
只需阅读一下,我认为您需要重写WndProc并查找WM_TOUCH事件。
查看Windows 7 Multitouch .NET Interop Sample Library,其中包含有关处理Winform中的触摸和手势的示例。
我不确定,但是您是否尝试过使用轻击事件来捕获触摸而不是单击事件?
您必须重写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;
}
}
}