触摸事件无法触发 C# WPF

4
我创建了一个程序,订阅WPF的触摸事件。在过去几个月里,一切都按预期工作,但昨天所有的触摸事件都无法触发。我尝试创建一个新的、简单的程序来测试触摸事件,但它的工作方式相同,所有的触摸输入都被发送为鼠标事件,即使光标从鼠标箭头变成了触摸十字线。
我多次重启电脑并重新安装驱动程序,但似乎没有改变任何事情。我尝试使用不同品牌的触摸屏幕和不同的驱动程序,这些也曾经起作用,但出现了完全相同的问题。使用触摸屏的内置测试工具,我可以看到触摸和多点触控正在按照我的预期工作,查看系统属性中的“笔和触摸”部分可以确认电脑正在识别触摸屏幕。
编辑:我继续测试显示器,发现多点触控在其他窗口程序(如画图)中是有效的。触摸似乎只在我的应用程序中无法使用。
是否有其他人遇到过这种情况或者有任何想法如何重新启用触摸事件?

我曾经遇到过类似的问题,但重新启动后就解决了...很不好意思,我想问一下,你是完全关机了吗? - carny666
你上次使用以来下载了一些更新吗? - Harry89pl
我已经完全关闭了它好几次,有时拔掉屏幕,有时则保持连接。似乎没有什么区别。 - Sarah
谢谢,我也会试着在那里询问的。 - Sarah
你具体监听哪些事件以及使用的是哪个版本的.NET?我正在使用.NET 4.5 RC,并且经常与TouchDown连接而没有任何问题。我还使用MS Surface SDK 2.0进行触摸优化控件(顺便说一下,一些WPF控件已经进行了触摸优化,但Surface控件往往具有一些额外的功能,可以改善用户体验)。 - erodewald
显示剩余3条评论
3个回答

1

这听起来不像是驱动程序问题。可能在您的某个触摸事件中,您正在释放TouchCapture。您需要检查您的代码。搜索.ReleaseTouchCapture(e.TouchDevice);并检查您是否在正确的位置使用它。


代码本身没有问题,因为创建一个非常简单的程序,在接收到触摸或鼠标按下时更改颜色也会出现相同的问题。我通过在WinForms窗口中托管我的WPF窗口来解决了这个问题。我不知道为什么这样可以启用触摸,但现在它又可以工作了,这已经足够好了。 - Sarah

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,则点击将自动由触摸(按下)触发。这很简单,可以轻松适应各种情况。

不幸的是,对我来说不起作用,按钮会改变颜色为蓝色(表示有交互),但在我的应用程序中触摸/点击事件没有被触发。;/ - prf

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接