2016-06-21 72 views
1

在Windows窗体中有使用Q键激活当前聚焦的按钮/控件的方法吗?或者覆盖回车,以便按下Q激活当前的焦点控制,如Enter?我希望用户能够通过Tab和Q上的左手来控制应用程序来循环控制并激活它们。Windows窗体 - 覆盖使用其他键输入

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

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

+0

要将焦点移至不同的控件,“Tab”就足够了。你的意思是你想在'Button'上使用'Q'而不是'Enter'?怎么样一个'TextBox'? –

+0

事情是,一切都自动化,你只需做出一些决定,然后按下其中一个按钮,如果用户可以使用右手进行鼠标控制,并选择左侧的Tab + Q来选择按钮并激活它,而不使用输入。 – Drake

回答

2

正如你可以覆盖ProcessCmdKey,并检查一个选项,如果关键是Q然后发送使用SendKeys.Send输入并返回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,以查看按钮的行为。

+0

谢谢!这是工作! – Drake

+0

欢迎您:)如果需要,您可以通过检查“this.ActiveControl is Button”来限制按钮的行为。 –