WindowsフォームのKeyPreviewプロパティを認識しています。これにより、フォームは、フォーカスされたコントロールに渡される前にキーイベントを受け取ることができます。
ただし、フォーカスされたコントロールに到達した後、フォームがイベントを受信するようにします。
テストとして、フォームにTextBoxを配置しました。TextBoxに入力すると、特定のキーコマンドを押すと、デフォルトの動作を実行する必要があります。Ctrl-S、F1など、テキストボックスからフォームまでバブルして、より高いレベルで処理できるようにします。これらのコマンドは、TextBoxがデフォルトで実行しないコマンドです。
ただし、最初にTextBoxを通過するイベントが必要です。この機能が必要なアプリケーションは、この単純な例よりも複雑です。たとえば、TextBoxがフォーカスされたコントロールである場合、Ctrl-CとCtrl-Vを使用してデフォルトのコピーアンドペーストを実行する必要があります。ただし、他のさまざまなコントロールに焦点を当てている場合、これらのコマンドは、そこで処理される最上位のフォームレベルに到達する必要があります。
編集: 入力イベントはフォームからフォーカスされたコントロールに移動し、私が期待していたようにその逆ではないようです。フォーカスからフォームに移行した場合、おそらく問題は発生しません。
Edit2: この記事を(簡単に)読んだ:http://www.codeproject.com/KB/WPF/BeginWPF3.aspx私は今、私がちょうど「そこにいる」と期待していた種類の「バブリング」があると仮定していますWPFでのみ使用可能で、標準のC#では使用できません。醜いコードを書くのではなく、ユーザーが私のアプリを操作する方法を再考する必要があると思います。
醜いコードなしでC#でWPFスタイルのバブリングを行うことに返信できる人には大きなポイントがあります。