我有一个表单并且正在订阅KeyUp事件并处理ALT键,这很有效但只有当我的表单具有焦点时,如果表单上的控件具有焦点,那么这不再起作用;当控件有焦点时,我可以使用什么来捕获键?我宁愿不必订阅表单控件上的每个KeyUp事件......
感谢。
答案 0 :(得分:4)
将表单的 KeyPreview 属性设置为true是否适用于您?
答案 1 :(得分:2)
尝试从表单中覆盖 ProcessCmdKey 。只要表单处于活动状态,无论哪个控件具有焦点,都会引发此问题。你将不得不做更多的工作检查keydata。例如:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if ((keyData & Keys.Alt) == Keys.Alt)
{
Debug.WriteLine("ALT");
}
return base.ProcessCmdKey(ref msg, keyData);
}