【问题标题】:Disable a right click (press and hold) in WPF application.在 WPF 应用程序中禁用右键单击(按住)。
【发布时间】:2011-05-11 09:34:56
【问题描述】:

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

我最好不要禁用应用程序级别的右键单击,但如果不可能,禁用 Windows 级别的右键单击也对我有用。

【问题讨论】:

    标签: wpf touch right-click windows-xp-embedded


    【解决方案1】:

    OnPreviewMouseRightButtonDown/Up 方法对我不起作用。

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

    2. 还有一篇博文here 提供了一个代码示例,用于在窗口级别禁用类似的按住。但是有了这个,PreviewTouchDown 和 TouchDown 事件将不会在手指触摸屏幕时立即引发(我猜这是 RepeatButton 所必需的),只是稍后。阅读this msdn page上的“备注”。

    【讨论】:

    • 我确认 Stylus.IsPressAndHoldEnabled 解决方案也适用于 Windows 8 :-) 谢谢!
    • 我知道这是旧版本,但我也确认 Stylus.IsPressAndHoldEnabled 解决方案适用于 Windows 10。
    • 谢谢。我需要使用它来删除“按住效果矩形”。刚开始使用带有 WPF 的触摸屏,这很难找到答案。
    【解决方案2】:

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

    这应该可以解决问题。

    【讨论】:

    • 您的意思是在 UI 元素中添加 OnPreviewMouseRightButtonDown?
    • 如果您在 Window 上处理 OnPreviewMouseRightButtonDown,您将在其他人之前处理它...您不需要为每个控件都处理它
    • 对!忘记了窗口派生自 UIElement,因此具有所有鼠标事件。唯一的事情是您必须将 OnPreviewMouseRightButtonDown 和 OnPreviewMouseRightButtonUp 都标记为已处理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-19
    • 2021-03-26
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多