Usando eventos do mouse (Windows Forms .NET)

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 (Windows Forms .NET).

Importante

A documentação do Guia da Área de Trabalho para .NET 7 e .NET 6 está em construção.

Eventos do mouse

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

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

Informações do mouse

A MouseEventArgs é enviado para os manipuladores de eventos do mouse relacionados a clicar em um botão do mouse e rastrear os movimentos do mouse. MouseEventArgs fornece informações sobre o estado atual do mouse, incluindo o local do ponteiro do mouse nas coordenadas do cliente, quais botões do mouse são pressionados e se a roda do mouse foi rolada. Vários eventos de 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 obter 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, também poderá usar as MouseButtons propriedades e MousePosition da Control classe. MouseButtons Retorna informações sobre quais botões do mouse estão pressionados no momento. O retorna MousePosition as coordenadas de tela do ponteiro do mouse e é equivalente ao valor retornado por Position.

Convertendo entre coordenadas de cliente e da tela

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

Comportamento de evento de clique padrão

Se quiser manipular eventos de clique do mouse na ordem correta, você precisará conhecer a ordem em que os eventos de clique são gerados em controles dos Windows Forms. Todos os controles do Windows Forms geram eventos de clique na mesma ordem quando qualquer botão do mouse com suporte é pressionado e liberado, exceto onde indicado na lista a seguir para controles individuais. A lista a seguir mostra a ordem dos eventos gerados por um único clique do botão do mouse:

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

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

  1. MouseDown acontecimento.

  2. Click acontecimento.

  3. MouseClick acontecimento.

  4. MouseUp acontecimento.

  5. MouseDown acontecimento.

  6. DoubleClick acontecimento.

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

  7. MouseDoubleClick acontecimento.

  8. MouseUp acontecimento.

Controles individuais

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

Comportamento de pintura dos controles de alternância

Os controles de alternância, como os ButtonBase controles derivados da classe, 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 controle pinta no estado pressionado.

  3. O evento MouseDown será gerado.

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

  5. O controle pinta no estado elevado.

  6. O evento Click será gerado.

  7. O evento MouseClick será gerado.

  8. O evento MouseUp será gerado.

    Observação

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

Confira também