Проблема с событием Control MouseLeave - PullRequest
3 голосов
/ 23 апреля 2011

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

Пользователь будет вне control, а событие MouseLeave не было вызвано. Теперь я не знаю, есть ли способ исправить это, или есть лучшее событие для использования. У меня в основном есть UserControl, в котором есть Combobox. Когда другие прокручивают UserControl, появляется ComboBox (работает каждый раз), однако, когда пользователь оставляет этот Control для перехода к другому, он может или не может сделать ComboBox`.Visible = false. Кажется, это зависит от скорости перемещения курсора.

Есть идеи, ребята?

Ответы [ 3 ]

1 голос
/ 23 апреля 2011

Некоторое время назад это случилось со мной!Мне пришлось перехватывать события мыши, используя PInvoke, и сам выполнять всю логику.

Следующая статья содержит подробности о том, как перехватывать события мыши.

http://www.codeproject.com/KB/cs/globalhook.aspx

Послевам удастся перехватить события, вам нужно будет выполнить логику вычисления абсолютной позиции вашего элемента управления и определить, находится или нет указатель мыши.Затем вам нужно отслеживать изменения ввода / вывода, и это все.

Долгий путь ... Я бы сказал, что это излишество.Но, если вам это действительно нужно, в любом случае.

0 голосов
/ 23 апреля 2011

Я думаю, что это происходит, когда мышь захвачена: WM_MOUSELEAVE не генерируется, если удерживать левую кнопку мыши

0 голосов
/ 23 апреля 2011

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

 private void comboBox1_Leave(object sender, EventArgs e)
        {

        }

Вы можете использовать событие comboboxleave, которое будет вызываться, когда вы покидаете этот элемент управления, и это то, что вы ожидаете, я думаю :) Не забудьте сначала зарегистрировать событие

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