【问题标题】:How to fire UIElement.TouchDown event on Windows Forms C# on Touchscreen, windows 8如何在触摸屏上的 Windows 窗体 C# 上触发 UIElement.TouchDown 事件,Windows 8
【发布时间】:2013-08-10 01:15:59
【问题描述】:

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

【问题讨论】:

  • 我不知道你在说什么。你有什么问题?
  • 对,用更简单的方式。我认为我们可以将这个问题简化为一个简单的带有一个按钮的 winform。我想通过在触摸屏上触摸 UIElement.TouchDown 来处理它。我怎样才能做到这一点?也许现在你会更多地了解我之前所说的。
  • winforms 中没有UIElement 这样的东西。我不知道你在说什么。

标签: c# winforms events


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多