Compartilhar via


Usando eventos de 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).

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 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 entra ou sai 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 a localização do ponteiro do mouse e quiser evitar manipular um evento do mouse, também poderá usar as MouseButtons propriedades and MousePosition da Control classe. MouseButtons Retorna informações sobre quais botões do mouse estão pressionados no momento. O MousePosition retorna as coordenadas da 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 do evento Click 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 quando 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 do 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 StandardDoubleClick bit de estilo definido como true. Para obter mais informações sobre como definir um ControlStyles bit, 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 de controles de alternância

Os controles de alternância, como os controles derivados da ButtonBase 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 pressionado (como mover o mouse para fora do Button controle enquanto ele estiver pressionado), o controle de alternância será pintado no estado elevado e somente o MouseUp evento ocorrerá. Os Click eventos or MouseClick não ocorrerão nesta situação.

Confira também