2016-06-21 28 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」來限制按鈕的行爲。 –