Pregunta

Tengo una aplicación que abre un formulario modal con el método ShowDialog. Una vez que se muestra este formulario, quiero capturar el movimiento del mouse incluso si el cursor está fuera del formulario. ¿Cómo puedo capturar el movimiento del mouse? Vi algo con la propiedad Capture pero no puedo lograr que funcione.

[editar]

Deseo recibir una notificación si el mouse se mueve fuera del formulario.

¿Fue útil?

Solución

La propiedad Capture es la forma correcta, pero hay algunas limitaciones.

  • Solo la ventana de primer plano puede capturar el mouse
  • La captura del mouse puede ser deshabilitada por otras partes del sistema
  • La función Win32 API SetCapture se restablece cada vez que un "mouse up" evento ocurre Supongo que eso también se aplica a .NET.

Consulte la sección de comentarios de la propiedad Capture .

Cuando se captura el mouse, recibirá los eventos habituales pero con un rango de coordenadas del mouse más amplio (por ejemplo, una posición X negativa, si el mouse queda fuera del control de captura)

La captura del mouse es frágil, debido a su naturaleza global. Compruebe si hay otras formas de manejar ciertos eventos. Quizás los eventos MouseLeave o MouseEnter sean suficientes en su caso.

Otros consejos

Puede usar la propiedad estática Control.MousePosition .

Puede leer la posición del cursor, utilizando la propiedad Cursor.Position, consulte Cursor.Position

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top