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:
MouseDown acontecimento.
Click acontecimento.
MouseClick acontecimento.
MouseUp acontecimento.
A seguir está a ordem dos eventos gerados para um clique duplo no 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 bit de StandardDoubleClick estilo definido como
true
. Para obter mais informações sobre como definir um ControlStyles pouco, consulte o SetStyle método.)MouseDoubleClick acontecimento.
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:
-
Observação
Para o controle, o comportamento do evento detalhado posteriormente ocorre se o ComboBox 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 botão direito do mouse: não são gerados eventos de clique
Clique duas vezes à esquerda: Click, ; Click, MouseClickMouseClick
Clique duas vezes com botão direito: não são gerados eventos de clique
TextBox, , , RichTextBoxListBoxMaskedTextBoxe controles CheckedListBox
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 botão direito do mouse: não são gerados eventos de clique
Clique duas vezes com o botão esquerdo: Click, , , MouseClickDoubleClick,MouseDoubleClick
Clique duas vezes com botão direito: não são gerados eventos de clique
Controle ListView
Observação
O comportamento de 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, existem os BeforeLabelEdit e AfterLabelEdit eventos, que podem ser de 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 mouse: Click, MouseClick
Clique duas vezes à esquerda: Click, ; DoubleClick, MouseClickMouseDoubleClick
Clique duas vezes com o botão direito do mouse: Click, ; DoubleClick, MouseClickMouseDoubleClick
Controle TreeView
Observação
O comportamento de 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, existem os BeforeCheckeventos , , , , , e , AfterSelectBeforeLabelEditAfterCheckBeforeSelectque AfterLabelEdit 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 do mouse: Click, MouseClick
Clique duas vezes à esquerda: Click, ; DoubleClick, MouseClickMouseDoubleClick
Clique duas vezes com o botão direito do mouse: Click, ; DoubleClick, MouseClickMouseDoubleClick
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:
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 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
.NET Desktop feedback