问题描述
winform窗体中的某个按钮,没有定义任何热键但是在程序处理逻辑将该按钮的enabled属性设置为false后,偶然情况下,客户拍了下键盘,居然触发了该按钮事件可以保证1、该按钮的单击事件没有任何其他地方触发,也就是说只有用鼠标单击该按钮才可触发2、整个窗体及其他控件都未设置过热键3、按钮的enabled属性为false,并不存在处理逻辑失误导致enabled属性为true,由客户点击按钮造成触发事件4、客户机上未运行其他任何程序求各位大神解答,谢谢
解决方案
本帖最后由 ilovedxt 于 2015-04-10 22:47:39 编辑
解决方案二:
在你自己的电脑上重复10遍,你能保证至少有7次都一定触发同样的事件吗?如果不能重现问题,就无法承接这种问题。如果能确保重现问题,那么你自己就不会这样来描述问题了。
解决方案三:
会点编程技术本身是很低级的东西,只有那些纯粹的外行才会感觉我们这些会点编程的人好像挺高大上、挺会修电脑甚至修软件似地。但是我们自己应该知道,真正高级的是首先懂得“如何重现问题”那些人,那些人的本事在编程之外,在于有测试的创意,在编程之上。而如果我们整天都毫无测试的创意,不把精力用于研究“如何重现问题”,还整天“瞎猜技术原因”,就太迂腐了。
解决方案四:
关键就是不能重现问题,所以没有解决方案,而且都是偶然出现,但是能保证如果出现这种情况,一定是固定的button,窗体上的其他button都没出现这种情况。一开始考虑是逻辑错误,导致该按钮的enabled属性并未设置为false,但是通过输出日志发现确实已经设置为false了之后考虑是不是注册了热键,检查后发现没有,而且经过测试,发现就算该按钮注册了热键,但是enabled设置为false后,热键也不会触发按钮事件今天又试了下,是不是按钮获取焦点后用户按了enter或空格键等特殊按键,发现按键获取焦点后,一旦enabled设置为false,焦点会自动的转到下一个控件上去,顺序是按照控件的tabindex属性来的。所以也排除了用户通过enter和空格两个特殊按键触发事件。
解决方案五:
而且还不知道客户是按了哪个键触发的,如果知道还能具体测试下,问了客户,今天给我回答是不知道,今天是个小孩在乱拍键盘导致出现这种问题的。