【发布时间】:2011-04-21 18:48:38
【问题描述】:
我有一个表单,并且正在订阅 KeyUp 事件并处理 ALT 键,这很好用,但只有当我的表单具有焦点时,如果表单上的控件具有焦点,那么这将不再有效;当控件具有焦点时,我可以使用什么来捕获键?我宁愿不必订阅表单控件上的每个 KeyUp 事件...
谢谢。
【问题讨论】:
标签: c# winforms controls capture
我有一个表单,并且正在订阅 KeyUp 事件并处理 ALT 键,这很好用,但只有当我的表单具有焦点时,如果表单上的控件具有焦点,那么这将不再有效;当控件具有焦点时,我可以使用什么来捕获键?我宁愿不必订阅表单控件上的每个 KeyUp 事件...
谢谢。
【问题讨论】:
标签: c# winforms controls capture
将表单的 KeyPreview 属性设置为 true 对您有用吗?
【讨论】:
尝试从您的表单中覆盖 ProcessCmdKey。只要表单处于活动状态,无论哪个控件具有焦点,都会引发此问题。您将不得不做更多的工作来检查密钥数据。例如:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if ((keyData & Keys.Alt) == Keys.Alt)
{
Debug.WriteLine("ALT");
}
return base.ProcessCmdKey(ref msg, keyData);
}
【讨论】: