問題:
箭頭鍵有時無法觸發 KeyDown 事件,除非使用 Control 等修飾鍵按下。
解:
可以透過使用 PreviewKeyDown
事件並將箭頭鍵按下時的 e.IsInputKey
明確設定為 true
來修正此行為。 程式碼如下:
<code class="language-csharp">private void Form_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) { if (e.KeyCode == Keys.Up || e.KeyCode == Keys.Down || e.KeyCode == Keys.Left || e.KeyCode == Keys.Right) { e.IsInputKey = true; } }</code>
此程式碼片段直接解決了根本原因:標準 Control 類別將箭頭鍵處理為導航鍵。透過將 e.IsInputKey
設為 true
,您可以強制針對箭頭鍵輸入觸發 KeyDown 事件,而不管修飾鍵如何。
重要注意事項:
TabStop
屬性無法解決此問題。 ProcessCmdKey
;它是為選單快捷方式處理而設計的,而不是一般的按鍵輸入。 以上是為什麼我的箭頭鍵沒有觸發 KeyDown 事件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!