4

我创建了一个订阅 WPF 触摸事件的程序。在过去的几个月里,一切都按预期工作,但昨天没有一个触摸事件会触发。我尝试创建一个新的简单程序来测试触摸事件,但它的工作原理相同,所有触摸输入都作为鼠标事件发送,即使光标从鼠标箭头变为触摸十字准线。

我多次重新启动计算机并重新安装了驱动程序,但它似乎没有改变任何东西。我尝试使用具有不同驱动器的不同品牌的触摸屏,这些驱动器也可以正常工作,并且遇到了完全相同的问题。使用触摸屏的内置测试工具,我可以看到触摸和多点触控按预期工作,并且查看系统属性的笔和触摸部分确认计算机正在识别触摸屏。

编辑:我继续测试显示器,似乎多点触控在其他 Windows 程序(如绘画)中工作。触摸似乎仅在我的应用程序中不起作用。

有没有其他人经历过这种情况或知道如何重新启用触摸事件?

4

3 回答 3

1

这听起来不像是驱动程序问题。可能是在您发布TouchCapture的某个着陆事件中。你需要检查你的代码。搜索.ReleaseTouchCapture(e.TouchDevice);并检查您是否在正确的地方使用它。

于 2012-09-06T08:38:12.697 回答
1

回答这个具体问题有点晚了,但由于我遇到了类似的问题,我花了一段时间才找到解决方案,这就是我想出的。在 WPF 中,按钮上的单击事件会禁用触摸输入。一个简单的解决方法是这个新类:

public class TouchButton : Button
{
    public TouchButton()
    {
        TouchDown += TouchButton_TouchDown;
    }

    private void TouchButton_TouchDown(object sender, System.Windows.Input.TouchEventArgs e)
    {
        RaiseEvent(new RoutedEventArgs(ClickEvent));
    }
}

如果您将 Xaml 中的按钮更改为 TouchButtons,则单击将由 touch(down) 自动触发。它非常简单,可以轻松适应各种情况。

于 2020-04-09T11:09:23.843 回答
0

不知何故,将 Window 转换为 UserControl 并在 WinForms Window 中托管解决了问题,并且触摸事件像以前一样触发。

于 2012-12-07T13:23:52.787 回答