在我的c#/ winforms应用程序中,我想做一些像应用程序范围的键盘快捷键一样的操作,应该在任何地方触发,除非焦点位于用户可以编辑文本的控件中,如文本框。
目前我正在覆盖此功能来执行此操作。
protected override bool ProcessCmdKey(ref Message msg, Keys keyData);
如何为此添加一个例外,当用户处于可编辑的控件中时不会触发它?
谢谢!
答案 0 :(得分:1)
我在这里看到了2个解决方案。
1)在每个可编辑控件中,处理所有键盘事件,并在eventArgs对象中,将Handled属性设置为true;
e.Handled = true;
2)在执行宽键盘快捷键之前,查找具有焦点的控件,如果是TextBox,则忽略它。每个表格中可能都有一种方法可以说明控制有什么重点。
第二种选择更清洁。我不提供代码,因为我现在没有打开Visual Studio,但是如果你需要更多特定的代码,你可以问。
PS:在这里,我为你做了一些谷歌搜索:How to Get FOcused Control?