Visão geral do uso do mouse (Windows Forms .NET)

Receber e manipular entradas de mouse é uma parte importante qualquer aplicativo do Windows. Você pode manipular eventos do mouse para executar uma ação em seu aplicativo ou usar informações de localização do mouse para executar testes de ocorrências ou outras ações. Além disso, você pode alterar a maneira como os controles em seu aplicativo lidam com a entrada do mouse. Este artigo descreve esses eventos de mouse em detalhes e como obter e alterar as configurações do sistema para o mouse.

Importante

A documentação do Guia da Área de Trabalho para .NET 7 e .NET 6 está em construção.

No Windows Forms, a entrada do usuário é enviada para aplicativos na forma de mensagens do Windows. Uma série de métodos substituíveis processam essas mensagens no nível do aplicativo, formulário e controle. Quando esses métodos recebem mensagens do mouse, eles geram eventos que podem ser manipulados para obter informações sobre a entrada do mouse. Em muitos casos, os aplicativos do Windows Forms podem processar todas as entradas do usuário simplesmente manipulando esses eventos. Em outros casos, um aplicativo pode substituir um dos métodos que processam mensagens para interceptar uma mensagem específica antes que ela seja recebida pelo aplicativo, formulário ou controle.

Eventos de mouse

Todos os controles do Windows Forms herdam um conjunto de eventos relacionados às entradas de mouse e teclado. Por exemplo, um controle pode manipular o evento para determinar o MouseClick local de um clique do mouse. Para obter mais informações sobre os eventos do mouse, consulte Usando eventos do mouse.

Localização do mouse e teste de acerto

Quando o usuário move o mouse, o sistema operacional move o ponteiro do mouse. O ponteiro do mouse contém um único pixel, chamado de ponto de acesso, que o sistema operacional rastreia e reconhece como a posição do ponteiro. Quando o usuário move o mouse ou pressiona um botão do mouse, o que contém o gera o ControlHotSpot evento de mouse apropriado.

Você pode obter a posição atual do mouse com a propriedade do ao manipular um evento do mouse ou usando a LocationMouseEventArgsPositionCursor propriedade da classe. Em seguida, você pode usar as informações de localização do mouse para realizar o teste de acerto e, em seguida, executar uma ação com base na localização do mouse. O recurso de teste de acertos é incorporado a vários controles no Windows Forms, como os ListViewcontroles , TreeViewe DataGridView . MonthCalendar

Usado com o evento de mouse apropriado, por exemplo, MouseHover o teste de acertos é muito útil para determinar quando seu aplicativo deve executar uma ação específica.

Alterando as configurações de entrada do mouse

Você pode detectar e alterar a maneira como um controle manipula a entrada do mouse derivando do controle e usando os GetStyle métodos e SetStyle . O SetStyle método usa uma combinação bit a bit de valores para determinar se o controle terá o comportamento padrão de ControlStyles clique, clique duplo ou se o controle manipulará seu próprio processamento do mouse. Além disso, a SystemInformation classe inclui propriedades que descrevem os recursos do mouse e especificam como o mouse interage com o sistema operacional. A tabela a seguir resume essas propriedades.

Propriedade Descrição
DoubleClickSize Obtém as dimensões, em pixels, da área em que o usuário deve clicar duas vezes para que o sistema operacional considere os dois cliques um clique duplo.
DoubleClickTime Obtém o número máximo de milissegundos que podem decorrer entre um primeiro clique e um segundo clique para que a ação do mouse seja considerada um clique duplo.
MouseButtons Obtém o número de botões do mouse.
MouseButtonsSwapped Obtém um valor que indica se as funções dos botões esquerdo e direito do mouse foram trocadas.
MouseHoverSize Obtém as dimensões, em pixels, do retângulo no qual o ponteiro do mouse deve permanecer pelo tempo de foco do mouse antes que uma mensagem de foco do mouse seja gerada.
MouseHoverTime Obtém o tempo, em milissegundos, que o ponteiro do mouse deve permanecer no retângulo de foco antes que uma mensagem de foco do mouse seja gerada.
MousePresent Obtém um valor que indica se um mouse está instalado.
MouseSpeed Obtém um valor que indica a velocidade atual do mouse, de 1 a 20.
MouseWheelPresent Obtém um valor que indica se um mouse com botão de rolagem está instalado.
MouseWheelScrollDelta Obtém o valor delta do incremento de uma única rotação da roda do mouse.
MouseWheelScrollLines Obtém o número de linhas a rolar quando o botão de rolagem do mouse é girado.

Métodos que processam mensagens de entrada do usuário

Formulários e controles têm acesso à IMessageFilter interface e a um conjunto de métodos substituíveis que processam mensagens do Windows em diferentes pontos da fila de mensagens. Todos esses métodos têm um Message parâmetro, que encapsula os detalhes de baixo nível das mensagens do Windows. É possível implementar ou substituir esses métodos para analisar a mensagem e, então, consumi-la ou passá-la para o próximo consumidor na fila de mensagens. A tabela a seguir apresenta os métodos que processam todas as mensagens do Windows no Windows Forms.

Método Observações
PreFilterMessage Este método intercepta mensagens do Windows que estão na fila (também chamadas de postadas) no nível do aplicativo.
PreProcessMessage Este método intercepta as mensagens do Windows no nível do formulário e do controle antes que elas sejam processadas.
WndProc Este método processa mensagens do Windows no nível do formulário e do controle.
DefWndProc Esse método realiza o processamento padrão de mensagens do Windows no nível do formulário e do controle. Isso fornece a funcionalidade mínima de uma janela.
OnNotifyMessage Esse método intercepta mensagens no nível de formulário e controle, depois que elas são processadas. O EnableNotifyMessage bit de estilo deve ser definido para que esse método seja chamado.

Confira também