Partilhar via


Usando eventos do mouse

A maioria dos programas do Windows Forms processa a entrada do mouse manipulando os eventos do mouse. Este artigo fornece uma visão geral dos eventos do mouse, incluindo detalhes sobre quando usar cada evento e os dados fornecidos para cada evento. Para obter mais informações sobre eventos em geral, consulte Visão geral de eventos.

Eventos do rato

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 acionados.

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. Use a MouseEventArgs.Delta propriedade para determinar até onde o mouse rolou.

Informações do mouse

Uma MouseEventArgs é enviada aos manipuladores de eventos do mouse relacionados ao clique em um botão do mouse e ao rastreamento dos movimentos do mouse. MouseEventArgs fornece informações sobre o estado atual do mouse, incluindo a localização do ponteiro do mouse nas coordenadas do cliente, quais botões do mouse são pressionados e se a roda do mouse rolou. Vários eventos do mouse, como aqueles que são gerados quando o ponteiro do mouse entrou ou saiu dos limites de um controle, enviam um EventArgs para o manipulador de eventos sem mais informações.

Se você quiser saber o estado atual dos botões do mouse ou o local do ponteiro do mouse e quiser evitar manipular um evento do mouse, você também pode usar as propriedades MouseButtons e MousePosition da classe Control. MouseButtons retorna informações sobre quais botões do mouse estão pressionados no momento. O MousePosition retorna as coordenadas de tela do ponteiro do mouse e é equivalente ao valor retornado por Position.

Conversão entre Coordenadas de Ecrã e Cliente

Como algumas informações de localização do mouse estão nas coordenadas do cliente e outras estão nas coordenadas da tela, talvez seja necessário converter um ponto de um sistema de coordenadas para o outro. Você pode fazer isso facilmente usando os métodos PointToClient e PointToScreen disponíveis na classe Control.

Comportamento de evento de clique padrão

Se você quiser manipular eventos de clique do mouse na ordem correta, você precisa saber a ordem em que os eventos de clique são gerados nos controles do Windows Forms. Todos os controles do Windows Forms geram eventos de clique na mesma ordem quando qualquer botão do mouse suportado é pressionado e liberado, exceto onde anotado na lista a seguir para controles individuais. A lista a seguir mostra a ordem dos eventos gerados para um único clique no botão do mouse:

  1. MouseDown evento.
  2. Click evento.
  3. MouseClick evento.
  4. MouseUp evento.

A seguir está a ordem dos eventos gerados para um clique duplo no botão do mouse:

  1. MouseDown evento.

  2. Click evento.

  3. MouseClick evento.

  4. MouseUp evento.

  5. MouseDown evento.

  6. DoubleClick evento.

    Isso pode variar, dependendo se o controle em questão tem o bit de estilo StandardDoubleClick definido como true. Para obter mais informações sobre como definir um ControlStyles bit, consulte o SetStyle método.

  7. MouseDoubleClick evento.

  8. MouseUp evento.

Controlos individuais

Os seguintes controles não estão em conformidade com o comportamento de evento de clique do mouse padrão:

Comportamento de pintura dos controles de alternância

Os controles de alternância, como os controles derivados da classe ButtonBase, têm o seguinte comportamento de pintura distinto em combinação com eventos de clique do mouse:

  1. O usuário pressiona o botão do mouse.

  2. O comando pinta quando está pressionado.

  3. O evento MouseDown é acionado.

  4. O usuário libera o botão do mouse.

  5. O controle pinta no estado elevado.

  6. O evento Click é acionado.

  7. O evento MouseClick é acionado.

  8. O evento MouseUp é acionado.

    Observação

    Se o usuário mover o ponteiro para fora do controle de alternância enquanto o botão do mouse estiver inativo (como mover o mouse para fora do Button controle enquanto ele é pressionado), o controle de alternância pintará no estado elevado e somente o MouseUp evento ocorrerá. Os eventos Click ou MouseClick não ocorrerão nesta situação.

Ver também