1. ホーム
  2. c#

[解決済み] 上、下、左、右の矢印キーがKeyDownイベントを発生させない

2023-06-18 15:36:52

質問

すべてのキー入力がウィンドウズ自体によって処理される必要があるアプリケーションを構築しています。

私はパネル以外のフォーカスをつかむことができる各コントロールのためにtabstopをfalseに設定しました(しかし、私はそれが効果的であるかどうかわかりません)。

KeyPreviewをtrueに設定し、このフォームのKeyDownイベントを処理しています。

私の問題は、時々矢印キーが反応しなくなることです。

  • 矢印キーだけを押したときに、keydown イベントが発生しない。

  • コントロールモディファイアを使用して矢印キーを押した場合、keydownイベントが発生する。

なぜ、矢印キーが突然イベントを発生しなくなったか、お分かりになりますか?

どのように解決するのですか?

    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;                
        }
    }