2011-05-11 126 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