Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Simular eventos de mouse en Windows Forms no es tan sencillo como simular eventos de teclado. Windows Forms no proporciona una clase auxiliar para mover el mouse e invocar acciones de clic del mouse. La única opción para controlar el mouse es usar métodos nativos de Windows. Si está trabajando con un control personalizado o un formulario, puede simular un evento del mouse, pero no puede controlar directamente el mouse.
Eventos
La mayoría de los eventos tienen un método correspondiente que los invoca, denominado según el patrón On
seguido por EventName
, como OnMouseMove
. Esta opción solo es posible dentro de los controles o formularios personalizados, ya que estos métodos están protegidos y no se puede tener acceso desde fuera del contexto del control o formulario. La desventaja de usar un método como OnMouseMove
es que realmente no controla el mouse o interactúa con el control, simplemente genera el evento asociado. Por ejemplo, si quisiera simular el paso del puntero sobre un elemento en un ListBox, y el OnMouseMove
y el ListBox
no reaccionan visualmente con un elemento resaltado bajo el cursor.
Estos métodos protegidos están disponibles para simular eventos del mouse.
OnMouseDown
OnMouseEnter
OnMouseHover
OnMouseLeave
OnMouseMove
OnMouseUp
OnMouseWheel
OnMouseClick
OnMouseDoubleClick
Para obtener más información sobre estos eventos, consulte Uso de eventos del mouse.
Invocar un clic
Teniendo en cuenta que la mayoría de los controles hacen algo cuando se hace clic, como un botón que llama al código de usuario o la casilla cambia su estado activado, Windows Forms proporciona una manera fácil de activar el clic. Algunos controles, como un cuadro combinado, no hacen nada especial al hacer clic y simular un clic no tiene ningún efecto en el control.
PerformClick
La System.Windows.Forms.IButtonControl interfaz proporciona el PerformClick método que simula un clic en el control . System.Windows.Forms.Button y System.Windows.Forms.LinkLabel implementan esta interfaz como controles.
button1.PerformClick();
Button1.PerformClick()
InvokeClick
Con un formulario de un control personalizado, use el InvokeOnClick método para simular un clic del mouse. Se trata de un método protegido al que solo se puede llamar desde el formulario o desde un control personalizado derivado.
Por ejemplo, el código siguiente hace clic en una casilla 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
Uso de métodos nativos de Windows
Windows proporciona métodos que puedes llamar para simular movimientos del mouse y clics como User32.dll SendInput
y User32.dll SetCursorPos
. En el ejemplo siguiente se mueve el cursor del mouse al centro de un control:
[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 también
.NET Desktop feedback