Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 survol d'un élément dans un ListBox, OnMouseMove
, et si le ListBox
ne réagit pas visuellement avec un élément sous le curseur mis en surbrillance.
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
Effectuer un clic
Windows Forms fournit un moyen simple de déclencher le clic, étant donné que la plupart des contrôles déclenchent une action lorsqu'ils sont cliqués, comme lorsqu'un bouton déclenche le code utilisateur ou une case à cocher change son état. Certains contrôles, tels qu'une zone de liste modifiable, ne font rien de spécial lorsque vous cliquez ou simulez un clic; cela n'a aucun effet pour 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 System.Windows.Forms.Button et System.Windows.Forms.LinkLabel implémentent cette interface.
button1.PerformClick();
Button1.PerformClick()
InvokeClick
Dans un formulaire de contrôle personnalisé, utilisez la méthode InvokeOnClick 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 permet de cocher une case à cocher depuis 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