-2

矢印キーを処理するカスタムテキストエディタコントロールを作成しました。問題は、フォームに複数のコントロールがある場合、矢印キーの処理がキューに入れられることです。最初はイベントがフォーカスされたコントロールで処理され、次に別のカスタムコントロールで処理され、次にフォーカスされたコントロールで処理されます。では、フォーム上のすべてのコントロールではなく、カスタムテキストエディタコントロールだけで矢印キーを処理するにはどうすればよいですか?

4

2 に答える 2

0

KeyEventArgsオブジェクトで処理する必要があります。キーイベントを消費するコントロールは、KeyEventArgs.Handledプロパティをtrueに設定して、消費したことを示す必要があります。

于 2012-12-14T10:05:06.590 に答える
0

問題は、実際には矢印キーを使用したWinFormナビゲーションが原因でした。だから私は私のテキストエディタのナビゲーションを無効にします。そのため、OnPreviewKeyDownイベントは、次の例のようにオーバーライドされました。

    protected override void OnPreviewKeyDown(PreviewKeyDownEventArgs e)
    {
        base.OnPreviewKeyDown(e);

        switch (e.KeyCode)
        {
            case Keys.Up:
            case Keys.Down:
            case Keys.Left:
            case Keys.Right:
                e.IsInputKey = true;
                break;
            default:
                break;
        }
    }
于 2012-12-14T19:00:45.600 に答える