C# Event.ClickCount 解决垃圾鼠标带来的烦恼

  今天调试遇到个Bug,百思不得其解的是在自己的设备上重来不重现,在测试机上百分百重现,如下:

问题:点击一次Button执行两次Click操作

分析:看Log的确是执行了两次,就像真的点击了两次Button一样

原因:经过N多测试终于发现-不要不把测试机当机看啊,测试机也需要个好鼠标啊!!!!它的鼠标有问题,人手动点击一次就会不自觉的出发两次,这样就尴尬了

解决方案:

1.Event.ClickCount管控

  private void Button_PreviewMouseDown(object sender, MouseButtonEventArgs e)
        {
            if (e.ClickCount >= 2)
            {
                return;
            }
            bt01.Content += e.ClickCount.ToString()+" ";
        }

  ClickCount识别MouseDown次数,可根据该属性进行逻辑控制

PS:上述经测试可行,手贱又试了下PreviewMouseDoubleClick看看什么效果

  private void Bt01_PreviewMouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            if (e.ClickCount >= 2)
            {
                return;
            }
            bt01.Content += e.ClickCount.ToString() + " ";
        }

  竟然也会输出出来,这意味着在DoubleClick时候ClickCount的值=1,有点奇怪,Mark下

解决方案2:页面控制即时刷新

  在MouseDown后首先对Button.Enable属性进行设置为False,然后调用WPF刷新方法进行立即刷新,在执行完逻辑后再修改回来,代码先欠着~~

见如下

 
原文地址:https://www.cnblogs.com/Khan-Sadas/p/10039569.html