Как ComboBox захватывает мышь, когда она раскрывается?

Я пытаюсь смоделировать поведение раскрывающегося списка ComboBox (или других раскрывающихся списков в этом отношении, включая контекстные меню), где раскрывающееся меню закрывается, когда вы щелкаете где-нибудь еще, даже если вы не можете сфокусироваться.

Я пробовал подписаться на такие события, как MouseCaptureChanged, LostFocus и Leave. У меня есть настраиваемый UserControl, который действует как раскрывающийся список, и я просто хочу закрыть его, когда пользователь щелкает где-нибудь еще.

Это похоже на то, что делается во многих элементах управления, поэтому я был бы удивлен, если бы не было простого способа сделать это.

Пока что излишне сложные методы, которые я могу придумать для этого, используют pinvoke и функцию SetCapture () или создают MessageFilter. Если это единственные варианты, я не уверен, что лучше.

7
задан Trevor Elliott 14 February 2012 в 16:02
поделиться