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:
- MouseDown acontecimento.
- Click acontecimento.
- MouseClick acontecimento.
- MouseUp acontecimento.
A seguir está a ordem dos eventos gerados para um clique duplo do botão do mouse:
MouseDown acontecimento.
Click acontecimento.
MouseClick acontecimento.
MouseUp acontecimento.
MouseDown acontecimento.
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.MouseDoubleClick acontecimento.
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:
-
Observação
Para o controle, o comportamento do evento detalhado ComboBox 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: nenhum evento de clique gerado
- Clique duas vezes com o botão esquerdo: Click, MouseClick; Click, MouseClick
- Clique duplo com o botão direito: nenhum evento de clique gerado
TextBox, RichTextBox, ListBox, MaskedTextBoxe CheckedListBox controles
Observação
O comportamento do evento detalhado a seguir ocorre quando o usuário clica em qualquer lugar desses controles.
- Clique com o botão esquerdo: Click, MouseClick
- Clique com o botão direito: nenhum evento de clique gerado
- Clique duas vezes com o botão esquerdo: Click, MouseClick, DoubleClick, MouseDoubleClick
- Clique duplo com o botão direito: 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 outro lugar no controle. Além dos eventos descritos posteriormente, há os BeforeLabelEdit eventos and AfterLabelEdit , que podem ser de interesse para você 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: Click, MouseClick
- Clique duas vezes com o botão esquerdo: Click, MouseClick; DoubleClick, MouseDoubleClick
- Clique duas vezes com o botão direito: Click, MouseClick; DoubleClick, MouseDoubleClick
Controle TreeView
Observação
O comportamento do evento detalhado posteriormente ocorre somente quando o usuário clica nos próprios itens ou à direita dos itens no TreeView controle. Nenhum evento é gerado para cliques em qualquer outro lugar no controle. Além dos descritos posteriormente, há os BeforeCheckeventos , BeforeSelect, BeforeLabelEdit, AfterSelect, AfterCheck, e AfterLabelEdit , que podem ser de seu interesse se você quiser usar a validação com o TreeView controle.
- Clique com o botão esquerdo: Click, MouseClick
- Clique com o botão direito: Click, MouseClick
- Clique duas vezes com o botão esquerdo: Click, MouseClick; DoubleClick, MouseDoubleClick
- Clique duas vezes com o botão direito: Click, MouseClick; DoubleClick, MouseDoubleClick
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:
O usuário pressiona o botão do mouse.
O controle pinta no estado pressionado.
O evento MouseDown será gerado.
O usuário libera o botão do mouse.
O controle pinta no estado elevado.
O evento Click será gerado.
O evento MouseClick será gerado.
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
.NET Desktop feedback