Share via


Eventos do mouse no Windows Forms

Quando manipula entradas de mouse, você geralmente deseja conhecer a localização do ponteiro do mouse e o estado dos botões do mouse. Este tópico fornece detalhes sobre como obter essas informações de eventos do mouse e explica a ordem em que eventos de clique do mouse são gerados em controles dos Windows Forms. Para obter uma lista e uma descrição de todos os eventos de mouse, consulte Como a entrada do mouse funciona nos Windows Forms. Consulte também Visão geral de manipuladores de eventos (Windows Forms) e Visão geral de eventos (Windows Forms).

Informações sobre o 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 simplesmente notificam 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, 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 do evento de clique

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 dos Windows Forms geram eventos de clique na mesma ordem quando um botão do mouse é pressionado e liberado (independentemente de qual botão do mouse), exceto onde é indicado na lista a seguir de 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.

Para ver um exemplo de código que mostra a ordem dos eventos de clique do mouse, consulte Como manipular eventos de entrada do usuário em controles dos Windows Forms.

Controles individuais

Os controles a seguir não estão em conformidade com o comportamento padrão dos eventos 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