问题由来:
在程序设计中,使用Dev这套控件的工具条菜单控件所添加的菜单按钮设置快捷键。当打开界面按下快捷键时,会触发该按钮的点击事件,这是一种很方便的功能。
这种设置针对程序只有一个单一的窗体是很不错,但是一般大的项目都是一个主界面,添加一个TabControl,其它的功能窗体都是作为一个TabPage去show出来。面对这种分格的软件去通过每个界面再设置按钮快捷键就行不通了。
Bug:
亲自测试出现的一个问题就是,当我在其中一个窗体设置了新增,修改,删除三个按钮的快捷键。另一个窗体只有删除按钮,并且也给它设置快捷键。(同一套软件,统一功能按钮设置快捷键是一样的组合键,比如所有的新增都用Ctrl+N,修改用Ctrl+E,删除用Ctrl+D)
第一个窗体设置了3个按钮的快捷键,使用都没问题。第二个窗体的删除按钮快捷键使用也没有问题。问题出在第二个窗体没有新增与修改按钮,但是按下快捷键时,会触发第一个窗口的新增与修改按钮的点击事件。这样肯定是有问题的。所以就不能够使用这种直接去界面设置barManage中按钮的itemShortCut属性的方式了。
解决方案:
面对这种情况,这里记录一种好理解的简单做法。
首先,找到最外层的那个窗体(也就是软件的主窗体),通过这个窗体的KeyUp事件去捕获按下了什么快捷键,其次判断当前TabControl显示的是哪一个TabPag