Вопрос

У меня есть приложение, которое открывает модальную форму с помощью метода ShowDialog.После отображения этой формы я хочу зафиксировать движение мыши, даже если курсор находится за пределами формы.Как я могу захватить движение мыши?Я видел что-то со свойством Capture, но не могу заставить его работать.

[редактировать]

Я хочу получать уведомления, если мышь выйдет за пределы формы.

Это было полезно?

Решение

В Capture property — правильный путь, но есть некоторые ограничения.

  • Только окно переднего плана может захватывать мышь.
  • Захват мыши можно отключить в других частях системы.
  • Функция Win32 API SetCapture сбрасывается каждый раз, когда происходит событие «мышь вверх».Я предполагаю, что это также относится и к .NET.

См. раздел примечаний из Capture свойство.

Когда мышь будет захвачена, вы получите обычные события, но с более широким диапазоном координат мыши (например, отрицательное положение X, если мышь находится слева от элемента управления захватом).

Захват мыши ненадежен из-за его глобального характера.Проверьте, есть ли другие способы обработки определенных событий.Возможно, MouseLeave или MouseEnter событий достаточно в вашем случае.

Другие советы

Вы можете просто использовать статическое свойство Control.MousePosition.

Вы можете прочитать положение курсора, используя свойство Cursor.Position, см. Курсор.Позиция

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top