今天调试遇到个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刷新方法进行立即刷新,在执行完逻辑后再修改回来,代码先欠着~~
见如下