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.
Simular eventos de mouse no Windows Forms não é tão simples quanto simular eventos de teclado. O Windows Forms não fornece uma classe auxiliar para mover o mouse e invocar ações de clique do mouse. A única opção para controlar o mouse é usar métodos nativos do Windows. Se você estiver trabalhando com um controle personalizado ou um formulário, poderá simular um evento do mouse, mas não poderá controlar diretamente o mouse.
Eventos
A maioria dos eventos tem um método correspondente que os invoca, nomeado no padrão de On seguido por EventName, como OnMouseMove. Essa opção só é possível em formulários ou controles personalizados, pois esses métodos são protegidos e não podem ser acessados de fora do contexto do controle ou formulário. A desvantagem de usar um método como OnMouseMove é que ele realmente não controla o mouse ou interage com o controle, ele simplesmente gera o evento associado. Por exemplo, se você quiser simular passar o mouse sobre um item em um ListBox, OnMouseMove e o ListBox não reagirá visualmente com um item realçado sob o cursor.
Esses métodos protegidos estão disponíveis para simular eventos do mouse.
OnMouseDownOnMouseEnterOnMouseHoverOnMouseLeaveOnMouseMoveOnMouseUpOnMouseWheelOnMouseClickOnMouseDoubleClick
Para obter mais informações sobre esses eventos, consulte Usando eventos do mouse
Invocar um clique
Considerando que a maioria dos controles faz algo quando clicado, como um botão que chama o código do usuário ou a caixa de seleção altera seu estado marcado, o Windows Forms fornece uma maneira fácil de disparar o clique. Alguns controles, como uma caixa de combinação, não fazem nada especial quando clicado e simular um clique não tem efeito no controle.
PerformClick
A interface System.Windows.Forms.IButtonControl fornece o método PerformClick que simula um clique no controle. Os controles System.Windows.Forms.Button e System.Windows.Forms.LinkLabel implementam essa interface.
button1.PerformClick();
Button1.PerformClick()
InvokeClick
Em um formulário com controle personalizado, use o método InvokeOnClick para simular um clique do mouse. Esse é um método protegido que só pode ser chamado de dentro do formulário ou de um controle personalizado derivado.
Por exemplo, o código a seguir clica em uma caixa de seleção de button1.
private void button1_Click(object sender, EventArgs e)
{
InvokeOnClick(checkBox1, EventArgs.Empty);
}
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
InvokeOnClick(CheckBox1, EventArgs.Empty)
End Sub
Usar métodos nativos do Windows
O Windows fornece métodos que você pode chamar para simular movimentos e cliques do mouse, como User32.dll SendInput e User32.dll SetCursorPos. O exemplo a seguir move o cursor do mouse para o centro de um controle:
[DllImport("user32.dll", EntryPoint = "SetCursorPos")]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool SetCursorPos(int x, int y);
private void button1_Click(object sender, EventArgs e)
{
Point position = PointToScreen(checkBox1.Location) + new Size(checkBox1.Width / 2, checkBox1.Height / 2);
SetCursorPos(position.X, position.Y);
}
<Runtime.InteropServices.DllImport("USER32.DLL", EntryPoint:="SetCursorPos")>
Public Shared Function SetCursorPos(x As Integer, y As Integer) As Boolean : End Function
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim position As Point = PointToScreen(CheckBox1.Location) + New Size(CheckBox1.Width / 2, CheckBox1.Height / 2)
SetCursorPos(position.X, position.Y)
End Sub
Consulte também
.NET Desktop feedback