向上,向下,向左和向右箭頭鍵不會(huì)觸發(fā)KeyDown事件我正在構(gòu)建一個(gè)應(yīng)用程序,其中所有鍵輸入必須由Windows本身處理。我為每個(gè)控件設(shè)置了tabstop為false,除了一個(gè)面板之外,女巫可以抓住焦點(diǎn)(但我不知道它是否有效)。我將KeyPreview設(shè)置為true,我正在處理此窗體上的KeyDown事件。我的問(wèn)題是,有時(shí)箭頭鍵不再響應(yīng):當(dāng)我只按箭頭鍵時(shí),不會(huì)觸發(fā)keydown事件。如果我按下帶有控件修飾符的箭頭鍵,則會(huì)觸發(fā)keydown事件。你知道我的箭頭鍵突然停止發(fā)射事件的原因嗎?
3 回答

Qyouu
TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超11個(gè)贊
protected override bool IsInputKey(Keys keyData) { switch (keyData) { case Keys.Right: case Keys.Left: case Keys.Up: case Keys.Down: return true; case Keys.Shift | Keys.Right: case Keys.Shift | Keys.Left: case Keys.Shift | Keys.Up: case Keys.Shift | Keys.Down: return true; } return base.IsInputKey(keyData); } protected override void OnKeyDown(KeyEventArgs e) { base.OnKeyDown(e); switch (e.KeyCode) { case Keys.Left: case Keys.Right: case Keys.Up: case Keys.Down: if (e.Shift) { } else { } break; } }

湖上湖
TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個(gè)贊
(我原來(lái)的答案):
從控件類派生,您可以覆蓋ProcessCmdKey方法。Microsoft選擇從KeyDown事件中省略這些鍵,因?yàn)樗鼈冇绊懚鄠€(gè)控件并移動(dòng)焦點(diǎn),但這使得應(yīng)用程序很難以任何其他方式對(duì)這些鍵做出反應(yīng)。
- 3 回答
- 0 關(guān)注
- 305 瀏覽
添加回答
舉報(bào)
0/150
提交
取消