Как мне достоверно определить, когда мышь покидает элемент управления? - PullRequest
0 голосов
/ 02 ноября 2009

У меня есть несколько элементов управления с ToolStrips, содержащими кнопки. Мне нужно показать или скрыть некоторые кнопки, когда мышь входит в панель инструментов. Я знаю, что Mystery Meat - это плохо, но это то, что я должен сделать.

Событие ToolStrip MouseEnter возникает, когда мышь входит, но MouseLeave не всегда срабатывает, когда мышь уходит. Я думаю, что это может быть из-за того, что мышь перешла от того, чтобы быть внутри ребенка, к тому, чтобы быть вне контроля, не проходя через сам элемент управления.

Как мне достоверно определить, когда мышь покидает элемент управления?

Ответы [ 3 ]

0 голосов
/ 02 ноября 2009

Как насчет использования Global Hook: http://www.codeproject.com/KB/cs/globalhook.aspx

Так вы сможете сами управлять правильным результатом.

0 голосов
/ 02 ноября 2009

Я бы держался подальше от глобальных хуков.

Цитата От: MSDN

Примечание. Вы должны использовать глобальные хуки только для целей отладки; в противном случае вы должны избегать их. Глобальные зацепки снижают производительность системы и вызывают конфликты с другими приложения, которые реализуют то же самое тип глобального крючка.

Как только ваше приложение потеряет фокус, с событиями становится сложнее иметь дело. Переоцените свои бизнес-правила.

Возможно, вам нужно отключить приложение, когда оно теряет фокус. Это заставит пользователя щелкнуть или перейти к вашему приложению перед использованием инструментальных полосок. В этот момент вы можете просто захватить событие Control.GotFocus и выполнить любую логику, какую пожелаете.

0 голосов
/ 02 ноября 2009

MouseLeave срабатывает только если элемент управления владеет захватом мыши.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...