【问题标题】:Touch events not firing C# WPF触摸事件未触发 C# WPF
【发布时间】:2012-06-21 13:40:08
【问题描述】:

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

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

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

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

【问题讨论】:

  • 我遇到了类似的问题,但重新启动解决了它......我不想问,但你完全断电了吗?
  • 自上次运行以来您是否下载了一些更新?
  • 我确实将它完全关闭了好几次,有时是在拔掉屏幕的情况下,有时将它留在里面。似乎没有什么不同。
  • 我不相信有任何更新,没有。我也不认为这是更新问题,因为我之前在另一台计算机上看到过这种情况。我刚刚使用笔记本电脑解决了这个问题。
  • 如果这是配置/驱动问题,那么它可能属于 SuperUser.com

标签: c# wpf touch multi-touch


【解决方案1】:

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

【讨论】:

  • 代码中没有任何内容,因为创建一个非常简单的程序,根据接收到的触摸或鼠标按下来更改颜色会产生同样的问题。我可以通过在 WinForms 窗口中托管我的 WPF 窗口来修复它。为什么这会启用我不知道的触摸,但它又可以工作了,这对现在来说已经足够了。
【解决方案2】:

这个具体问题的答案有点晚了,但由于我遇到了类似的问题,我花了一段时间才找到解决方案,这就是我想出的。 在 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) 自动触发。它非常简单,可以轻松适应各种情况。

【讨论】:

  • 不幸的是对我不起作用,按钮颜色变为蓝色(表示有交互),但我的应用程序中没有引发触摸/点击事件;/
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 2016-06-22
    • 2010-11-08
    • 1970-01-01
    • 2019-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-09
    相关资源
    最近更新 更多