【问题标题】:How to get Touchscreen to use Mouse Events instead of Touch Events in C# app如何让触摸屏在 C# 应用程序中使用鼠标事件而不是触摸事件
【发布时间】:2012-06-28 13:17:53
【问题描述】:

我开发了一个 C# 应用程序,它覆盖了一些自定义控件中的 PreviewMouseUp、PreviewMouseMove 和 PreviewMouseDown 事件,以允许通过单击和拖动来滚动滚动查看器。当鼠标用于拖动和滚动时,此自定义代码在非触摸屏上效果很好,但是当我在真正的触摸屏显示器上使用它时,它无法工作,因为当触摸和拖动显示器时 PreviewMouseUp 不会被触发一个指头。

我希望能够使用我现有的代码进行最少的更改。这将允许我在笔记本电脑上调试时使用鼠标单击/拖动,并使用触摸屏触摸/拖动。

是否可以将 Windows 7 计算机配置为将所有触摸(PreviewTouchUp、PreviewTouchDown 和 PreviewTouchMove)视为鼠标事件?

更新:我忘了提。我认为如果不处理 Touch 事件,那么 .NET 之后会自动引发 Mouse 事件。即使我编写的代码当前没有处理触摸事件,这似乎也没有发生。任何想法为什么会发生这种情况?

谢谢, 布莱恩

【问题讨论】:

    标签: c# wpf touch mouse


    【解决方案1】:

    您可以对两者使用相同的方法,如下所示:

    protected override void OnPreviewMouseUp(MouseButtonEventArgs e)
    {
        OnPreviewTouchMouseUp(e);
    }
    
    protected override void OnPreviewTouchUp(TouchEventArgs e)
    {
        OnPreviewTouchMouseUp(e);
    }
    
    private void OnPreviewTouchMouseUp(EventArgs e)
    {
    
    }
    

    唯一的区别是获取鼠标/触摸坐标的方式:

    对于触摸:

    e.GetTouchPoint(this).Position;
    

    对于鼠标:

    e.GetPosition(this);
    

    【讨论】:

    • 这导致我在触摸时出现重复行为。因为在 Touch 上,两个事件都执行了:Touch 和 Mouse。你能帮我解决这个问题吗?
    • @KhalilKhalaf,使用e.handled = true;在 het OnPreviewTouchUp 事件处理程序中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    • 2017-01-21
    • 2019-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多