私は大まかに次のようなWinFormsアプリを構築しています:
メニュー、ツールバー、ステータス バー、ナビゲーション ツリー、カスタム描画キャンバス (キーボード入力を受け入れ、テキストを描画し、キャレットもレンダリングする UserControl) を備えた単一のフォームと、ユーザーがテキストを検索します。
これらの動作を機能させるのに苦労しています:
1) 検索パネルのアクセラレータ (大文字と小文字を区別する場合は「c」、単語全体を表す場合は「w」など) は、キャンバスにフォーカスがある場合でも、これらの文字がキャンバスに入力されないようにします。
2) フォーカスがキャンバス以外の場所にあるときに ESC を押すと、キャンバスにフォーカスが戻るはずです。特に、これは検索テキストボックスにフォーカスがあるときに機能するはずです。これは、可能なフォーカスされたコントロールごとではなく、単一のポイントでキーボードをフックすることで実行できますか?