Windows窗体 - 使用其他键覆盖Enter

时间:2016-06-21 18:39:28

标签: winforms focus override

Windows窗体中是否有办法使用Q键激活当前关注的按钮/控件?或者覆盖Enter,以便按Q激活当前聚焦的控件,如Enter?我希望用户只需用Tab和Q上的左手来控制应用程序就可以循环控制并激活它们。

private void Form2_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Q)
            {
                e.Handled = true;
            }

我已经有了这个,但在e.Handled激活当前焦点后我需要什么?

1 个答案:

答案 0 :(得分:2)

作为选项,您可以覆盖ProcessCmdKey并检查密钥是否为 Q ,然后使用SendKeys.Send发送 Enter 并返回true }表示您处理了密钥:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    if (keyData == Keys.Q)
    {
        SendKeys.Send("{Enter}");
        return true;
    }
    return base.ProcessCmdKey(ref msg, keyData);
}

如果需要,可以通过选中this.ActiveControl is Button来限制按钮的行为。