如果焦点不在TabControl上,而是在TabControl的TabPage中的某一输入框,按Ctrl + Tab,就不会走PreviewKeyDown事件,但还是自动切换Tab了! 这个行为,在6.0版本被Log为HotFix的Bug,并且已经被修复
修复之后导致的一个副作用就是像你看到的,父页面无法收到PreviewKeyDown了。我觉得这个可能是一个问题。在后续版本中可以考虑修复一下。
关于目前的版本,有一个神器叫做GcGlobalHook,专治各种疑难杂症。参考以下Code:- // EnableKeyBoardHook先
- this.gcGlobalHook.EnableKeyboardHook = true;
- private void gcGlobalHook1_KeyDown(object sender, KeyEventArgs e)
- {
- if (e.KeyData == (Keys.Control | Keys.Tab) ||
- e.KeyData == (Keys.Control | Keys.Shift | Keys.Tab))
- {
- System.Diagnostics.Debug.WriteLine("Ctrl+Tab");
- if (this.gcTabControl1.ContainsFocus)
- {
- e.Handled = true;
- }
- }
- }
复制代码 |