Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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:
- MouseDown evento.
- Click evento.
- MouseClick evento.
- MouseUp evento.
A seguir está a ordem dos eventos gerados para um clique duplo no botão do mouse:
MouseDown evento.
Click evento.
MouseClick evento.
MouseUp evento.
MouseDown evento.
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.MouseDoubleClick evento.
MouseUp evento.
Controlos individuais
Os seguintes controles não estão em conformidade com o comportamento de evento de clique do mouse padrão:
-
Observação
Para o controle ComboBox, o comportamento de evento detalhado posteriormente ocorre se o usuário clicar no campo de edição, no botão ou em um item dentro da lista.
- Clique com o botão esquerdo: Click, MouseClick
- Clique com o botão direito do rato: Nenhum evento de clique gerado
- Clique duas vezes com o botão esquerdo: Click, MouseClick; , ClickMouseClick
- Clique duas vezes com o botão direito do mouse: Nenhum evento de clique gerado
Controles TextBox, RichTextBox, ListBox, MaskedTextBoxe CheckedListBox
Observação
O comportamento de evento detalhado posteriormente ocorre quando o usuário clica em qualquer lugar dentro desses controles.
- Clique com o botão esquerdo: Click, MouseClick
- Clique com o botão direito do rato: Nenhum evento de clique gerado
- Clique duas vezes com o botão esquerdo: Click, MouseClick, DoubleClick, MouseDoubleClick
- Clique duas vezes com o botão direito do mouse: Nenhum evento de clique gerado
ListView controlo
Observação
O comportamento de evento detalhado posteriormente ocorre somente quando o usuário clica nos itens no controle ListView. Nenhum evento é gerado para cliques em qualquer outro lugar no controle. Além dos eventos descritos posteriormente, existem os BeforeLabelEdit eventos e AfterLabelEdit , que podem ser do seu interesse se você quiser usar a validação com o ListView controle.
- Clique com o botão esquerdo: Click, MouseClick
- Clique com o botão direito do rato: Click, MouseClick
- Clique duas vezes com o botão esquerdo: Click, MouseClick; , DoubleClickMouseDoubleClick
- Clique duas vezes com o botão direito do mouse: Click, MouseClick; , DoubleClickMouseDoubleClick
TreeView controlo
Observação
O comportamento de evento detalhado posteriormente ocorre somente quando o usuário clica nos próprios itens ou à direita dos itens no controle TreeView. Nenhum evento é gerado para cliques em qualquer outro lugar no controle. Além dos descritos mais adiante, existem os eventos BeforeCheck, BeforeSelect, BeforeLabelEdit, AfterSelect, AfterChecke AfterLabelEdit, que podem ser do seu interesse se você quiser usar a validação com o controle TreeView.
- Clique com o botão esquerdo: Click, MouseClick
- Clique com o botão direito do rato: Click, MouseClick
- Clique duas vezes com o botão esquerdo: Click, MouseClick; , DoubleClickMouseDoubleClick
- Clique duas vezes com o botão direito do mouse: Click, MouseClick; , DoubleClickMouseDoubleClick
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:
O usuário pressiona o botão do mouse.
O comando pinta quando está pressionado.
O evento MouseDown é acionado.
O usuário libera o botão do mouse.
O controle pinta no estado elevado.
O evento Click é acionado.
O evento MouseClick é acionado.
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
.NET Desktop feedback