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