ToolStripDropDownButtonでカスタムコントロールを使用しています。 ToolStripDropDownButtonには、多数のツールストリップ項目(特に、チェックボックスであるカスタムツールストリップ項目)があります。ユーザーは、どのチェックボックス項目を選択するかを選択でき、DropDownClosedイベントを処理して、そのチェック項目を利用します。ToolStripDropDownButton - Escキーでドロップダウンの動作を変更します。
目的はユーザーのためです彼の選択はエスケープキーを押すことによって行われます。問題は、Escキーが押されたときにDropDownClosedイベントが発生することです。そのため、ユーザーがオプションを選択してEscキーを押して選択をキャンセルすると、DropDownClosedイベントが発生し、これらの設定が「適用」されます。
私はToolStripDropDownButtonをホスティングコントロール上で次のオーバーライドで遊んで試してみた:ドロップダウンがこれらのイベントのいずれかが処理される前に、隠しているようだとして、多くの成功なし
protected override bool ProcessCmdKey
protected override bool ProcessKeyPreview
protected override void WndProc
。 この動作を変更する最善の方法は何ですか?
私はすでにそれを試みましたが、子コントロールはメインコントロールが動作する前にイベントを処理しています。フォーム上で、Form.KeyPreviewをtrueに設定すると、コントロールの前にキーイベントを受け取ることができます。しかし、ユーザーコントロールは異なります。いずれにしても、キーイベントを処理しようとしてもドロップダウンが終了した後に*発生するようです。 OnDropDownClosedメソッドをオーバーライドできますが、Escが押されたかどうかの表示が必要です。 – MoSlo
ToolStripメニューの外の場所をクリックすると、選択内容を適用する必要があることをユーザーはどのように示しますか?その場合は、「適用」オプションを「ツールストリップ」メニューに追加する方が良いでしょうか?次に、ユーザー(およびコード...)はいつ変更を適用するのか、いつ取り消すのかを正確に知っています。 – Veldmuis