【发布时间】:2013-02-08 14:03:08
【问题描述】:
当我尝试在 Windows 8 机器上的列表框中同时处理鼠标和触摸输入时,我遇到了我认为的意外行为(因为它不同于在 Windows 7 上运行相同的软件)。
这是我处理事件的函数/方法
Private Sub Drag_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Input.InputEventArgs) Handles lvItems.PreviewMouseDown, lvItems.PreviewTouchDown
当我让它同时处理鼠标和触摸输入时(PreviewTouchDown 和 PreviewMouseDown),即使我在 TouchEventArgs 上为首先引发的事件。
如果我从事件处理程序中删除对 PreviewTouchDown 事件的处理,我将不会收到 PreviewMouseDown 事件。
我需要的是每次触摸/点击只调用一次该方法。我无法删除 PreviewMouseDown,因为它不仅用于触摸屏。为单次触摸同时传递触摸事件和鼠标事件会破坏我们的功能。
在 Windows 7 上,我只接收到触摸事件,因为我设置了handled=true,所以鼠标事件被取消了。
【问题讨论】:
-
为什么不把所有的功能都放在
PreviewMouseDown中,然后把PreviewTouchDown作为存根留在那里让PreviewMouseDown触发呢?不理想,但如果您无法找出问题所在,这是一种可能的解决方法。
标签: wpf vb.net windows-8 mouseevent touch-event