【问题标题】:How to determine if button was clicked or touched?如何确定按钮是否被点击或触摸?
【发布时间】:2016-12-15 22:28:47
【问题描述】:

有没有办法区分按钮是用鼠标单击还是使用 WPF 中的触摸屏触摸?

【问题讨论】:

    标签: wpf button click touchscreen


    【解决方案1】:

    您必须设置一个事件处理程序。在设计器中,双击按钮,将为您设置。

    然后在后面的代码中添加你想要的任何代码。

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        this.Title = "Clicked";
    }
    

    您还可以添加 TouchDown、TouchUp 等触摸事件。

    【讨论】:

    • 但是你怎么知道点击事件是由于鼠标点击还是触摸屏造成的呢?
    • 我不相信点击事件会触发触摸,即使是这样,您也需要设置触摸。我的触摸板今天坏了,所以我可以验证,但我认为你需要为此设置一个触摸事件处理程序。此外,鼠标将通过按下的按钮传递 MouseEventArgs,但触摸板不会
    【解决方案2】:

    您可以订阅PreviewMouseDownPreviewTouchDown

    Page.xaml

    <Button PreviewMouseDown="Button_PreviewMouseDown"
            PreviewTouchDown="Button_PreviewTouchDown" />
    

    Page.xaml.cs

        private void Button_PreviewMouseDown(object sender, MouseButtonEventArgs e)
        {
            MessageBox.Show("Mouse was used.");
        }
    
        private void Button_PreviewTouchDown(object sender, TouchEventArgs e)
        {
            MessageBox.Show("Touchscreen was used.");
        }
    

    我不相信您将能够在实际的点击事件中访问任何一个的事件参数。

    如果您需要在那里执行工作而不是预览事件,我建议您在预览事件中设置一个实例变量,这样当您到达点击事件时,您就会知道您来自哪里。

    【讨论】:

    • 很好的答案,非常感谢您的意见。我特别喜欢你的最后一句话,因为这最终是我想要做的。
    【解决方案3】:

    Windows 7 及其更高版本能够接收来自多个触摸感应设备的输入。 WPF 应用程序还可以通过在发生触摸时引发事件来将触摸输入作为其他输入(例如鼠标或键盘)处理。

    当触摸发生时,WPF 会公开两种类型的事件 - 触摸事件和操作事件。触摸事件提供有关触摸屏上每个手指及其移动的原始数据。操作事件将输入解释为某些动作。本节将讨论这两种类型的事件。

    WPF 使应用程序能够响应触摸。例如,您可以通过在触敏设备(例如触摸屏)上使用一根或多根手指与应用程序交互。本演练创建了一个应用程序,使用户能够使用触摸来移动、调整大小或旋转单个对象。

    来源 MSDN:https://msdn.microsoft.com/en-us/library/ee649090.aspx

    另请阅读此代码项目文章 - http://www.codeproject.com/Articles/692286/WPF-and-multi-touch

    【讨论】:

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