0

这需要是 Windows 窗体 (winforms) - 而不是 WPF。问题在于单个 MouseDown 事件在 Windows 8 的触摸屏上未正确触发。MouseDown 在触摸并移动手指或单击后触发 - 它会在您离开手指后触发。我想像普通的 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可以解决我的问题,但该解决方案可能非常漫长而艰难。非常感谢任何帮助或想法。

4

1 回答 1

0

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

于 2018-08-23T14:37:42.583 回答