Comment simuler des événements de souris (Windows Forms .NET)
La simulation d’événements de souris dans Windows Forms n’est pas aussi simple que la simulation d’événements de clavier. Windows Forms ne fournit pas de classe d’assistance pour déplacer la souris et appeler des actions de clic de souris. La seule option permettant de contrôler la souris consiste à utiliser des méthodes Windows natives. Si vous utilisez un contrôle personnalisé ou un formulaire, vous pouvez simuler un événement de souris, mais vous ne pouvez pas contrôler directement la souris.
Événements
La plupart des événements ont une méthode correspondante qui les appelle, nommée dans le modèle de On
suivi EventName
, par exemple OnMouseMove
. Cette option n’est possible que dans les contrôles ou formulaires personnalisés, car ces méthodes sont protégées et ne sont pas accessibles en dehors du contexte du contrôle ou du formulaire. L’inconvénient de l’utilisation d’une méthode telle que OnMouseMove
c’est qu’elle ne contrôle pas réellement la souris ou interagit avec le contrôle, il déclenche simplement l’événement associé. Par exemple, si vous souhaitez simuler le pointage sur un élément d’un élément dans un ListBox, OnMouseMove
et si vous ListBox
ne réagissez pas visuellement avec un élément mis en surbrillance sous le curseur.
Ces méthodes protégées sont disponibles pour simuler des événements de souris.
OnMouseDown
OnMouseEnter
OnMouseHover
OnMouseLeave
OnMouseMove
OnMouseUp
OnMouseWheel
OnMouseClick
OnMouseDoubleClick
Pour plus d’informations sur ces événements, consultez Utilisation des événements de souris (Windows Forms .NET)
Appeler un clic
Compte tenu de la plupart des contrôles, effectuez quelque chose lorsque vous cliquez, comme un bouton appelant le code utilisateur ou cochez la case à cocher, Windows Forms offre un moyen simple de déclencher le clic. Certains contrôles, tels qu’une zone de liste modifiable, ne font rien de spécial lorsque vous cliquez et simulez un clic n’a aucun effet sur le contrôle.
PerformClick
L’interface System.Windows.Forms.IButtonControl fournit la PerformClick méthode qui simule un clic sur le contrôle. Les contrôles et System.Windows.Forms.LinkLabel les System.Windows.Forms.Button contrôles implémentent cette interface.
button1.PerformClick();
Button1.PerformClick()
InvokeClick
Avec un formulaire d’un contrôle personnalisé, utilisez la InvokeOnClick méthode pour simuler un clic de souris. Il s’agit d’une méthode protégée qui ne peut être appelée qu’à partir du formulaire ou d’un contrôle personnalisé dérivé.
Par exemple, le code suivant clique sur une case à cocher .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
Utiliser des méthodes Windows natives
Windows fournit des méthodes que vous pouvez appeler pour simuler des mouvements de souris et des clics tels que User32.dll SendInput
et User32.dll SetCursorPos
. L’exemple suivant déplace le curseur de la souris au centre d’un contrôle :
[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
Voir aussi
.NET Desktop feedback