Partilhar via


Como funciona a entrada do mouse no Windows Forms

Receber e manipular a entrada do mouse é uma parte importante de todos os aplicativos do Windows. Você pode manipular eventos do mouse para executar uma ação em seu aplicativo ou usar informações de localização do mouse para executar testes de acerto ou outras ações. Além disso, você pode alterar a maneira como os controles em seu aplicativo lidam com a entrada do mouse. Este tópico descreve esses eventos do mouse em detalhes e como obter e alterar as configurações do sistema para o mouse. Para obter mais informações sobre os dados fornecidos com os eventos do mouse e a ordem na qual os eventos de clique do mouse são gerados, consulte eventos do mouse no Windows Forms.

Localização do rato e Hit-Testing

Quando o usuário move o mouse, o sistema operacional move o ponteiro do mouse. O ponteiro do mouse contém um único pixel, chamado de ponto de acesso, que o sistema operacional rastreia e reconhece como a posição do ponteiro. Quando o usuário move o mouse ou pressiona um botão do mouse, o Control que contém o HotSpot gera o evento de mouse apropriado. Você pode obter a posição atual do mouse com a propriedade Location do MouseEventArgs ao manipular um evento do mouse ou usando a propriedade Position da classe Cursor. Posteriormente, você pode usar as informações de localização do mouse para executar o teste de acerto e, em seguida, executar uma ação com base na localização do mouse. A funcionalidade de teste de acertos está incorporada em vários controlos no Windows Forms, como os controlos ListView, TreeView, MonthCalendar e DataGridView. Usado com o evento do rato apropriado, MouseHover por exemplo, o teste de colisão é muito útil para determinar quando o seu aplicativo deve executar uma ação específica.

Eventos do mouse

A principal maneira de responder à entrada do mouse é manipular eventos do mouse. A tabela a seguir mostra os eventos do mouse e descreve quando eles são gerados.

Evento do mouse Descrição
Click Esse evento ocorre quando o botão do mouse é liberado, normalmente antes do evento MouseUp. O manipulador para esse evento recebe um argumento do tipo EventArgs. Manipule esse evento quando você só precisa determinar quando ocorre um clique.
MouseClick Esse evento ocorre quando o usuário clica no controle com o mouse. O manipulador para esse evento recebe um argumento do tipo MouseEventArgs. Lide com este evento quando precisar obter informações sobre o rato quando ocorrer um clique.
DoubleClick Esse evento ocorre quando o controle é clicado duas vezes. O manipulador para esse evento recebe um argumento do tipo EventArgs. Manipule esse evento quando você só precisa determinar quando ocorre um clique duplo.
MouseDoubleClick Esse evento ocorre quando o usuário clica duas vezes no controle com o mouse. O manipulador para esse evento recebe um argumento do tipo MouseEventArgs. Manipule esse evento quando precisar obter informações sobre o mouse quando ocorrer um clique duplo.
MouseDown Esse evento ocorre quando o ponteiro do mouse está sobre o controle e o usuário pressiona um botão do mouse. O manipulador para esse evento recebe um argumento do tipo MouseEventArgs.
MouseEnter Este evento ocorre quando o ponteiro do rato entra na borda ou na área de cliente do controle, dependendo do tipo de controle. O manipulador para esse evento recebe um argumento do tipo EventArgs.
MouseHover Esse evento ocorre quando o ponteiro do mouse para e descansa sobre o controle. O manipulador para esse evento recebe um argumento do tipo EventArgs.
MouseLeave Esse evento ocorre quando o ponteiro do mouse sai da borda ou área do cliente do controle, dependendo do tipo do controle. O manipulador para esse evento recebe um argumento do tipo EventArgs.
MouseMove Esse evento ocorre quando o ponteiro do mouse se move enquanto está sobre um controle. O manipulador para esse evento recebe um argumento do tipo MouseEventArgs.
MouseUp Esse evento ocorre quando o ponteiro do mouse está sobre o controle e o usuário libera um botão do mouse. O manipulador para esse evento recebe um argumento do tipo MouseEventArgs.
MouseWheel Esse evento ocorre quando o usuário gira a roda do mouse enquanto o controle tem foco. O manipulador para esse evento recebe um argumento do tipo MouseEventArgs. Você pode usar a propriedade Delta de MouseEventArgs para determinar até onde o mouse rolou.

Alterando a entrada do mouse e detetando as configurações do sistema

Você pode detetar e alterar a maneira como um controle lida com a entrada do mouse derivando do controle e usando os métodos GetStyle e SetStyle. O método SetStyle usa uma combinação bit a bit de valores de ControlStyles para determinar se o controle terá o comportamento padrão de clique ou clique duplo ou se o controle manipulará seu próprio processamento do mouse. Além disso, a classe SystemInformation inclui propriedades que descrevem os recursos do mouse e especificam como o mouse interage com o sistema operacional. A tabela a seguir resume essas propriedades.

Propriedade Descrição
DoubleClickSize Obtém as dimensões, em pixels, da área em que o usuário deve clicar duas vezes para que o sistema operacional considere os dois cliques um clique duplo.
DoubleClickTime Obtém o número máximo de milissegundos que podem decorrer entre um primeiro clique e um segundo clique para que o sistema operacional considere a ação do mouse um clique duplo.
MouseButtons Obtém o número de botões no mouse.
MouseButtonsSwapped Obtém um valor que indica se as funções dos botões esquerdo e direito do mouse foram trocadas.
MouseHoverSize Obtém as dimensões, em pixels, do retângulo dentro do qual o ponteiro do mouse deve permanecer durante o tempo de foco do mouse antes que uma mensagem de foco do mouse seja gerada.
MouseHoverTime Obtém o tempo, em milissegundos, que o ponteiro do mouse precisa permanecer no retângulo de sobrevoo antes que uma mensagem de sobrevoo do mouse seja gerada.
MousePresent Obtém um valor que indica se um mouse está instalado.
MouseSpeed Obtém um valor que indica a velocidade atual do mouse, de 1 a 20.
MouseWheelPresent Obtém um valor que indica se um rato com uma roda de deslocamento está instalado.
MouseWheelScrollDelta Obtém a quantidade do valor delta do incremento de uma única rotação da roda do mouse.
MouseWheelScrollLines Obtém o número de linhas a serem roladas quando a roda do mouse é girada.

Ver também