Eventos
Compilación de Intelligent Apps
17 mar, 21 - 21 mar, 10
Únase a la serie de reuniones para crear soluciones de inteligencia artificial escalables basadas en casos de uso reales con compañeros desarrolladores y expertos.
Regístrese ahoraEste explorador ya no se admite.
Actualice a Microsoft Edge para aprovechar las características y actualizaciones de seguridad más recientes, y disponer de soporte técnico.
La simulación de eventos del mouse en Windows Forms no es tan sencillo como la de eventos de teclado. Windows Forms no proporciona una clase auxiliar para desplazar el mouse e invocar acciones de clic del mouse. La única opción para controlar el mouse consiste en usar métodos nativos de Windows. Si trabaja con un control personalizado o un formulario, puede simular un evento del mouse, pero no puede controlar directamente el mouse.
La mayoría de los eventos tienen un método correspondiente que los invoca, cuyo patrón es On
seguido de EventName
, como en OnMouseMove
. Esta opción solo es posible dentro de controles o formularios personalizados, porque estos métodos están protegidos y no se puede acceder a ellos fuera del contexto del control o formulario. La desventaja de usar un método como OnMouseMove
es que realmente no controla el mouse ni interactúa con el control; simplemente genera el evento asociado. Por ejemplo, si quiere simular el desplazamiento sobre un elemento de ListBox, OnMouseMove
y 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, vea Uso de eventos del mouse (Windows Forms para .NET)
Si se tiene en cuenta que la mayoría de los controles realizan una acción cuando se hace clic en ellos, como un botón que llama a un código de usuario o una casilla que cambia su estado activado, Windows Forms proporciona una manera sencilla de desencadenar el clic. Algunos controles, como los cuadros combinados, no hacen nada especial al hacer clic en ellos y simular un clic no tiene ningún efecto en el control.
La interfaz System.Windows.Forms.IButtonControl proporciona el método PerformClick que simula un clic en el control. Los controles System.Windows.Forms.Button y System.Windows.Forms.LinkLabel implementan esta interfaz.
button1.PerformClick();
Button1.PerformClick()
Con un control personalizado, use el método InvokeOnClick para simular un clic del mouse. Se trata de un método protegido al que solo se puede llamar desde dentro del formulario o 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
Windows proporciona métodos a los que puede llamar para simular movimientos y clics del mouse, 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
Comentarios de .NET Desktop feedback
.NET Desktop feedback es un proyecto de código abierto. Seleccione un vínculo para proporcionar comentarios:
Eventos
Compilación de Intelligent Apps
17 mar, 21 - 21 mar, 10
Únase a la serie de reuniones para crear soluciones de inteligencia artificial escalables basadas en casos de uso reales con compañeros desarrolladores y expertos.
Regístrese ahora