如何在触摸屏上的Windows窗体C#上触发UIElement.TouchDown事件,Windows 8

本文关键字:Windows UIElement TouchDown 事件 窗体 触摸屏 | 更新日期: 2023-09-27 18:27:02

这需要是Windows窗体(winforms),而不是WPF。问题是windows 8上的触摸屏上没有正确启动单个MouseDown事件。鼠标在触摸和移动手指后或点击后会开火——它在你离开手指后就会开火。我想像普通鼠标一样启动它——在我触摸屏幕之后。解决这一问题的办法将是TouchDown事件。但是,我就是处理不了那个事件。我所做的是创建类Multitouch,就像这样:

class Moultitouch : UIElement
{
    public Moultitouch()
    {
        this.TouchDown += new EventHandler<System.Windows.Input.TouchEventArgs>(Moultitouch_TouchDown);
    }
    void Moultitouch_TouchDown(object sender, System.Windows.Input.TouchEventArgs e)
    {
        //it never goes in
    }
    protected override void OnTouchDown(System.Windows.Input.TouchEventArgs e)
    {
        base.OnTouchDown(e);
    }
}

在那之后,我在我的组件中声明了在Touch上应该处理该事件的类。我对此做了很多研究,一直在努力做到这一点,但到目前为止什么都没有。我认为"在Windows窗体中托管WPF复合控件"http://msdn.microsoft.com/en-us/library/ms742215.aspx可以解决我的问题,但这个解决方案可能非常漫长和艰难。任何帮助或想法都将不胜感激。

如何在触摸屏上的Windows窗体C#上触发UIElement.TouchDown事件,Windows 8

您的问题是触摸屏触发事件和鼠标触发事件不是一回事。例如,Winform按钮可以通过处理OnMouseEnter和OnMouseLeave来切换其背景颜色。在窗体上编写代码,并在按钮内外运行光标,一切都很好。使用触摸屏并以同样的方式用手指在其上移动,直到你释放与屏幕的接触,然后引发点击事件,才会发生任何事情。这不是你想要的答案,但我为我的一个残疾朋友开发的屏幕键盘也有同样的问题。我的研究把我带到了这里https://blogs.windows.com/buildingapps/2017/05/25/uwp-evolution-touch-development/#02octDx0X3uBHXqm.97特别是提供有关ManipulationStarted和ManipulationEnded事件的详细信息的链接。希望这对我有所帮助,对我正在努力实现的目标也有帮助。