Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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 a visão geral de eventos.
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 evento MouseUp. O manipulador desse 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 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 | Esse evento ocorre quando o controle é clicado duas vezes. O manipulador desse 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 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 | Esse evento ocorre quando o ponteiro do mouse está sobre o controle e o usuário pressiona um botão do mouse. 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 | Esse evento ocorre quando o ponteiro do mouse para e permanece sobre o controle. O manipulador desse evento recebe um argumento do tipo EventArgs. |
MouseLeave | Esse evento ocorre quando o ponteiro do mouse deixa a borda ou a área do cliente do controle, dependendo do tipo do controle. O manipulador desse evento recebe um argumento do tipo EventArgs. |
MouseMove | Esse evento ocorre quando o ponteiro do mouse se move enquanto estiver sobre um controle. O manipulador desse 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 desse 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 desse evento recebe um argumento do tipo MouseEventArgs. Use a MouseEventArgs.Delta propriedade para determinar até onde o mouse rolou. |
Informações do mouse
Um MouseEventArgs é enviado para os manipuladores de eventos do mouse relacionados a clicar em um botão do mouse e acompanhar os 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 foi rolada. Vários eventos de mouse, como aqueles que são gerados quando o ponteiro do mouse inseriu ou deixou os 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 o tratamento de um evento do mouse, também poderá 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.
Convertendo entre coordenadas de tela e cliente
Como algumas informações de localização do mouse estão nas coordenadas do cliente e algumas estão em coordenadas de 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 padrão do evento de clique
Se você quiser manipular eventos de clique do mouse na ordem adequada, precisará saber a ordem na qual 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 de mouse com suporte é pressionado e liberado, exceto quando observado 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 StandardDoubleClick bit de estilo definido como
true
. Para obter mais informações sobre como definir um ControlStyles bit, consulte o SetStyle método.MouseDoubleClick evento.
MouseUp evento.
Controles individuais
Os controles a seguir não estão em conformidade com o comportamento de evento de clique do mouse padrão:
-
Observação
Para o ComboBox controle, o comportamento do evento detalhado posteriormente ocorrerá se o usuário clicar no campo de edição, no botão ou em um item dentro da lista.
- Clique à esquerda: Click, MouseClick
- Clique com o botão direito do mouse: Nenhum evento de clique gerado
- Clique duplo com o botão esquerdo: Click, MouseClick; Click, MouseClick
- Duplo clique com o botão direito do mouse: nenhum evento de clique gerado
TextBox, RichTextBox, ListBox, e MaskedTextBoxCheckedListBox controles
Observação
O comportamento do evento detalhado posteriormente ocorre quando o usuário clica em qualquer lugar dentro desses controles.
- Clique à esquerda: Click, MouseClick
- Clique com o botão direito do mouse: Nenhum evento de clique gerado
- Clique duplo com o botão esquerdo: Click, MouseClick, DoubleClick, MouseDoubleClick
- Duplo clique com o botão direito do mouse: nenhum evento de clique gerado
Controle ListView
Observação
O comportamento do evento detalhado posteriormente ocorre somente quando o usuário clica nos itens no ListView controle. Nenhum evento é gerado para cliques em qualquer outra parte do controle. Além dos eventos descritos posteriormente, há os eventos BeforeLabelEdit e AfterLabelEdit, que podem ser interessantes para você se quiser usar a validação com o controle ListView.
- Clique à esquerda: Click, MouseClick
- Clique com o botão direito do mouse: Click, MouseClick
- Clique duplo com o botão esquerdo: Click, MouseClick; DoubleClick, MouseDoubleClick
- Clique duas vezes com o botão direito do mouse: Click, MouseClick; DoubleClick, MouseDoubleClick
Controle TreeView
Observação
O comportamento do evento detalhado posteriormente ocorre somente quando o usuário clica nos itens em si ou à direita dos itens no controle TreeView. Nenhum evento é gerado para cliques em qualquer outra parte do controle. Além dos descritos posteriormente, há os eventos BeforeCheck, BeforeSelect, BeforeLabelEdit, AfterSelect, AfterCheck e AfterLabelEdit, que podem ser de seu interesse se você quiser usar a validação com o controle TreeView.
- Clique à esquerda: Click, MouseClick
- Clique com o botão direito do mouse: Click, MouseClick
- Clique duplo com o botão esquerdo: Click, MouseClick; DoubleClick, MouseDoubleClick
- Clique duas vezes com o botão direito do mouse: Click, MouseClick; DoubleClick, MouseDoubleClick
Comportamento de renderização de controles de alternância
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:
O usuário pressiona o botão do mouse.
O controle pinta quando pressionado.
O evento MouseDown é gerado.
O usuário libera o botão do mouse.
O controle exibe no estado em relevo.
O evento Click é gerado.
O evento MouseClick é gerado.
O evento MouseUp é 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 é pressionado), o controle de alternância é exibido em estado elevado e ocorre apenas o evento MouseUp. Os eventos Click ou MouseClick não ocorrerão nessa situação.
Consulte também
.NET Desktop feedback