ToolStripDropDownButton を持つカスタム コントロールがあります。ToolStripDropDownButton には、多数のツールストリップ アイテム (具体的には、チェックボックスであるカスタム ツールストリップ アイテム) があります。ユーザーは必要なチェックボックス項目を選択でき、DropDownClosed イベントを処理して、それらのチェックされた項目を利用します。
目的は、ユーザーがエスケープ キーを押して選択をキャンセルすることです。問題は、Escape キーが押されたときにも DropDownClosed イベントが発生することです。したがって、ユーザーがオプションを選択し、Escape を押して選択をキャンセルしたい場合、DropDownClosed イベントが発生し、それらの設定を「適用」することになります。
ToolStripDropDownButton をホストするコントロールで次のオーバーライドを試してみました。
protected override bool ProcessCmdKey
protected override bool ProcessKeyPreview
protected override void WndProc
これらのイベントのいずれかが処理される前にドロップダウンが隠れているように見えるため、あまり成功していません。この動作を修正する最善の方法は何ですか?