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.

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top