C# 关于WinForm界面在触摸屏上显示点触型按钮会引发右键导航栏功能

问题描述:
前几天在工控触摸屏上测试项目的时候,发现工控机一体机(屏自带触摸效果)上常按屏不放的话就会出现右键菜单栏。 而我现在的项目中有不少按钮的功能设计为点动类型,有需要常按屏幕不放的相关操作,所以会导致点动效果出不来。
之前做的项目中没有用到这种带触摸功能的工控机,鼠标操作的话,用MouseDown和MouseUp两个事件关联需要点动的按钮,就可以了而且没有任何问题。
但是换上这种带触摸功能的工控一体机,Winform框架提供的MouseDown和MouseUP这两个事件在用手去触摸工控一体的屏幕时,达不到预期的效果,相反会出现右键导航功能。如果非要触发这两个事件的话,必须先进行滑动然后再按住目标按钮(这样的动作才不会触发右键导航案例功能),才能起作用。
解决方案:
1、刚开始遇到这种情况时,认为是右键导航菜单栏干扰造成的;所以在工控屏上禁用了右键导航栏功能;操作步骤如下:
(1) 找到控制面板选项:
C# 关于WinForm界面在触摸屏上显示点触型按钮会引发右键导航栏功能_第1张图片
(2)在硬件和声音选项中
C# 关于WinForm界面在触摸屏上显示点触型按钮会引发右键导航栏功能_第2张图片
(3)笔和触摸功能块,点击设置笔势以执行某些任务选项
C# 关于WinForm界面在触摸屏上显示点触型按钮会引发右键导航栏功能_第3张图片
(4)在笔和触摸选项中,选择按下并保持设置选项,并点击设置按钮C# 关于WinForm界面在触摸屏上显示点触型按钮会引发右键导航栏功能_第4张图片
禁用右键功能之后,发现对于按钮的功能并没有多大的作用。要触发点动按钮,还需要先进行滑动然后再按住才能触发。
2、因为之前学了一些WPF框架的知识,所以想到用WPF中的按钮来替换当前Winform中的所有点动型按钮。
然后进行了简单的测试,问题得到了解决。
(2)相关测试代码如下:

using System.Windows.Forms;

namespace Touch
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            System.Windows.Controls.Button Btn_M1014 = new System.Windows.Controls.Button()
            {
            Background = System.Windows.Media.Brushes.Black,
            FontFamily = new System.Windows.Media.FontFamily("宋体"),
            FontSize = 9F,
            FontWeight = System.Windows.FontWeights.Bold,
            Foreground = System.Windows.Media.Brushes.White,
            BorderThickness = new System.Windows.Thickness(3, 3, 3, 3),
            BorderBrush = System.Windows.Media.Brushes.White,
            Name = "Btn_M1014"
             };
            Btn_M1014.Content = "这是一个WPF按钮";
            elementHost1.Child = Btn_M1014;
            Btn_M1014.AddHandler(System.Windows.Controls.Button.MouseDownEvent, new System.Windows.RoutedEventHandler(Btn_MouseDown), true);
            Btn_M1014.AddHandler(System.Windows.Controls.Button.MouseUpEvent, new System.Windows.RoutedEventHandler(Btn_MouseUp), true);
        }

        private void Btn_MouseDown(object sender, System.Windows.RoutedEventArgs e)
        {
            (sender as System.Windows.Controls.Button).Content = "松开";
        }

        private void Btn_MouseUp(object sender, System.Windows.RoutedEventArgs e)
        {
            (sender as System.Windows.Controls.Button).Content = "按下";
        }
    }
}

窗口如下:
C# 关于WinForm界面在触摸屏上显示点触型按钮会引发右键导航栏功能_第5张图片
总结:
本来是用的TouchDown和TouchUp这两个事件的,但是后面发现WPF button按钮中 MouseDown和MouseUp这两个事件也是可行的,而且还可以用鼠标来操控界面的点动按钮,方便测试,所以上面我依旧还是选用了后者。

你可能感兴趣的:(C#编程)