問題:
Control などの修飾キーと一緒に押さない限り、矢印キーは KeyDown イベントをトリガーできないことがあります。
解決策:
この動作は、PreviewKeyDown
イベントを使用し、矢印キーの押下に対して e.IsInputKey
を true
に明示的に設定することで修正できます。 コードは次のとおりです:
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; } }
このコード スニペットは、根本原因、つまり標準の Control クラスによるナビゲーション キーとしての矢印キーの処理に直接対処します。 e.IsInputKey
を true
に設定すると、修飾キーに関係なく、矢印キー入力に対して KeyDown イベントが強制的に発生します。
重要な考慮事項:
TabStop
プロパティを無効にしても、この問題は解決されません。ProcessCmdKey
の使用を避けてください。一般的なキー入力ではなく、メニュー ショートカットの処理用に設計されています。以上が矢印キーが KeyDown イベントをトリガーしないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。