【问题标题】:Windows Form - Override Enter with an other keyWindows 窗体 - 使用其他键覆盖 Enter
【发布时间】:2016-06-21 18:39:28
【问题描述】:

在 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 之后我需要什么来激活当前焦点?

【问题讨论】:

  • 要将焦点移动到不同的控件,Tab 就足够了。你的意思是你想在Button 上使用Q 而不是EnterTextBox 呢?
  • 问题是,一切都是自动化的,您只需做出一些决定并按下我拥有的按钮之一,如果用户可以使用右手和左手来控制鼠标,那就太好了用于 Tab + Q 选择一个按钮并激活它,而不使用 enter。

标签: winforms focus overriding


【解决方案1】:

作为一个选项,您可以覆盖 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 将行为限制为按钮。

【讨论】:

  • 不客气 :) 如果需要,您可以通过检查 this.ActiveControl is Button 将行为限制为按钮。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多