2011-05-11 65 views
12

我正在使用Windows XP Standard上运行的触摸屏应用程序。使用当前硬件调用右键单击用户必须单击并按住几秒钟,但这可能会干扰其他操作,例如在滚动查看器中按住重复按钮,因此我决定禁用右键单击。在WPF应用程序中禁用右键单击(按住)。

我最好不要在应用程序级别禁用右键单击,但如果不可能,禁用右键单击窗口级别也适用于我。

回答

7

您可以覆盖窗口上的OnPreviewMouseRightButtonDown并将Handled设置为true。你还需要处理OnPreviewMouseRightButtonUp(感谢Vitalij指出了这一点)

这应该做的伎俩。

+0

您的意思是添加OnPreviewMouseRightButtonDownto UI元素? – Vitalij 2011-05-11 11:07:03

+0

如果你在Window上处理OnPreviewMouseRightButtonDown,你将在任何其他人之前处理它...你不需要为每个控件继续处理它 – 2011-05-11 11:12:30

+0

对!忘记窗口来自UIElement,因此拥有所有的鼠标事件。唯一的是你必须将OnPreviewMouseRightButtonDown和OnPreviewMouseRightButtonUp标记为已处理。 – Vitalij 2011-05-11 13:13:19

21

OnPreviewMouseRightButtonDown/Up方法不适用于我。

  1. 但是,UIElement有一个属性Stylus.IsPressAndHoldEnabled。将其设置为false以摆脱按下并按住右键单击行为。我在.NET 4.0上测试了Windows 7,但是该属性可以从.NET 3.0中获得。

    <的RepeatButton Stylus.IsPressAndHoldEnabled =“假” .../>

  2. 还存在对压力机的类似禁用提供了一个代码采样和保持在窗位一博文here。但是,在这种情况下,只要手指触摸屏幕(这对我猜测的RepeatButton来说是必要的),PreviewTouchDown和TouchDown事件就不会立即提起,只是稍后。阅读this msdn page上的'备注'。

+1

我确认Stylus.IsPressAndHoldEnabled解决方案也适用于Windows 8 :-)谢谢! – 2014-11-13 10:09:04

+2

我知道这是旧的,但我也确认Stylus.IsPressAndHoldEnabled解决方案适用于Windows 10. – WBuck 2016-09-01 00:36:35

+0

谢谢。我需要使用它来移除“按住效果矩形”。作为WPF使用触摸屏的新手,这很难找到答案。 – horseman1210 2017-11-09 18:14:36