私はコンボボックスのドロップダウン(または、コンテキストメニューを含む他のドロップダウン)の動作をモデル化しようとしています。どこにフォーカスを当てることができないものでも、他の場所をクリックするとドロップダウンが閉じます。ComboBoxはドロップダウン時にどのようにマウスをキャプチャしますか?
私は、MouseCaptureChanged、LostFocus、Leaveなどのイベントを購読しようとしました。ドロップダウンとして機能するカスタムのUserControlがあり、ユーザーが他の場所をクリックしたときに閉じたいだけです。
これは多くのコントロールで行われているようですが、これを行う簡単な方法がないと驚いています。
これまで私が思いつくことができる複雑な方法は、pinvokeとSetCapture()関数を使用すること、またはMessageFilterを作成することです。これらが唯一の選択肢である場合は、どちらが良いか分かりません。
制御のようなドロップダウンを実装するための簡単な方法は、ToolStripControlHostとToolStripDropDownを使用することです。 ComboBoxのように動作します。 [リスト項目を表示するときにコンボボックスをどのようにしてマウスイベントをフォーム上のどこにでも傍受してリストを隠すにはどうすればいいですか?](0120-18756) – LarsTech
ToolStripControlHostを試しています。私はポップアップの上部に沿って醜い境界線を取り除くことはできません、またはあなたがドロップダウンを開くたびにComboBoxを点滅させることはできません。 –
ToolStripContorlHostの余白とToolStripDropDownの余白を0に設定してください。コントロールの点滅は別の問題です。カスタムドロップダウンでComboBoxを使用しようとしていますか? – LarsTech