Pergunta
Eu tenho um aplicativo wich abrir um formulário modal com o método ShowDialog. Uma vez que este formulário é exibido Eu quero capturar o movimento do mouse, mesmo se o cursor estiver fora do formulário. Como posso capturar o movimento do mouse? Eu vi alguma coisa com a propriedade de captura, mas eu não consigo fazê-lo funcionar.
[editar]
Quero ser notificado se o mouse movimento fora do formulário.
Solução
A propriedade Capture
é o caminho correto, mas existem algumas limitações.
- Somente a janela de primeiro plano pode capturar o mouse
- Mouse captura pode ser desativado por outras partes do sistema
- A função API Win32
SetCapture
fica cada vez redefinir um "mouse para cima" occours evento. Presumo que também se aplica para .NET.
Veja a observa seção da propriedade Capture
.
Quando o mouse é capturado, você vai receber os eventos habituais, mas com um mouse mais amplo coordenar intervalo (por exemplo, uma posição negativa X, se o mouse está à esquerda do controle de captura)
Mouse captura é frágil, porque ele é de natureza global. Verifique se há outras maneiras de lidar com determinados eventos. Talvez os eventos MouseLeave
ou MouseEnter
são suficientes no seu caso.
Outras dicas
Você pode apenas usar a propriedade estática Control.MousePosition .
Você pode ler a posição do cursor, usando a propriedade Cursor.Position, consulte Cursor.Position