Как продолжать проверять что-то без таймера? - PullRequest
1 голос
/ 08 августа 2011

Мне нужно иметь возможность постоянно проверять, находится ли мышь в определенной области формы. Я хочу быть в состоянии сделать это без использования таймера, хотя. Как бы я поступил так?

Я использую C # кстати.

Ответы [ 5 ]

6 голосов
/ 08 августа 2011

Вы пытались присоединить обработчик к событию MouseMove и проверять каждое движение?

3 голосов
/ 08 августа 2011

Если область является элементом управления экрана, вы можете использовать MouseEnter, MouseLeave, MouseHover и MouseMove события.

1 голос
/ 09 августа 2011

Если перехват события MouseMove срабатывает слишком часто - или если вы хотите избежать зацепления этого события в каждой форме, попробуйте вместо этого перехватить событие Application.Idle .

Это событие срабатывает каждый развремя, когда приложение собирается бездействовать - все ожидающие сообщения (включая перерисовки) были обработаны, и больше ничего не осталось.В большинстве приложений WinForms это происходит несколько раз в секунду, обеспечивая хороший способ обработки «точно в срок».

1 голос
/ 09 августа 2011

Я думаю, что события мыши, предложенные другими, являются лучшим решением, но в качестве другой альтернативы таймерам, вы могли бы написать небольшую функцию для проверки мыши и затем продолжать вызывать ее в диспетчере главного окна с приоритетом «простоя приложения»,Это будет постоянно запускать вашу проверку без зависания интерфейса.Опять же, подключиться к событию mousemove все еще является более чистым решением, IMO.

0 голосов
/ 08 августа 2011

Вам нужно определить события в этой области.

Используйте OnMouseEnter и OnMouseLeave вместе, чтобы решить, находится ли мышь в этой области или нет!

OnMouseEnter до OnMouseLeave означает, что мышь все еще находится в этой области.

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