Delen via


Muisgebeurtenissen simuleren (Windows Forms .NET)

Het simuleren van muis gebeurtenissen in Windows Forms is niet zo eenvoudig als het simuleren van toetsenbord gebeurtenissen. Windows Forms biedt geen helperklasse om de muis te verplaatsen en acties voor muisklikken aan te roepen. De enige optie voor het beheren van de muis is het gebruik van systeemeigen Windows-methoden. Als u met een aangepast besturingselement of formulier werkt, kunt u een muisgebeurtenis simuleren, maar u kunt de muis niet rechtstreeks bedienen.

Gebeurtenissen

De meeste gebeurtenissen hebben een bijbehorende methode die deze aanroept, die wordt genoemd in het patroon van On gevolgd door EventName, zoals OnMouseMove. Deze optie is alleen mogelijk binnen aangepaste besturingselementen of formulieren, omdat deze methoden zijn beveiligd en niet toegankelijk zijn buiten de context van het besturingselement of formulier. Het nadeel van het gebruik van een methode zoals OnMouseMove is dat deze niet daadwerkelijk de muis beheert of met het besturingselement communiceert, het genereert gewoon de bijbehorende gebeurtenis. Als u bijvoorbeeld wilt simuleren dat u met de muisaanwijzer over een item in een ListBoxzweeft, en de OnMouseMove en de ListBox niet visueel reageren met een gemarkeerd item onder de cursor.

Deze beveiligde methoden zijn beschikbaar om muisgebeurtenissen te simuleren.

  • OnMouseDown
  • OnMouseEnter
  • OnMouseHover
  • OnMouseLeave
  • OnMouseMove
  • OnMouseUp
  • OnMouseWheel
  • OnMouseClick
  • OnMouseDoubleClick

Voor meer informatie over deze gebeurtenissen, zie Muis-gebeurtenissen gebruiken (Windows Forms .NET)

Een klik aanroepen

Aangezien de meeste bedieningsknoppen iets doen wanneer erop wordt geklikt, zoals een knop die gebruikerscode aanroept of een selectievakje dat van aangevinkt naar niet-aangevinkt wisselt, biedt Windows Forms een eenvoudige manier om de klik te activeren. Sommige besturingselementen, zoals een keuzelijst met invoervak, reageren niet bijzonder wanneer erop wordt geklikt en het simuleren van een klik heeft geen effect op het besturingselement.

PerformClick

De System.Windows.Forms.IButtonControl-interface biedt de PerformClick methode waarmee een klik op het besturingselement wordt gesimuleerd. De besturingselementen System.Windows.Forms.Button en System.Windows.Forms.LinkLabel implementeren deze interface.

button1.PerformClick();
Button1.PerformClick()

InvokeClick

Gebruik een aangepast besturingselement in een formulier met de InvokeOnClick-methode om een muisklik te simuleren. Dit is een beveiligde methode die alleen vanuit het formulier of een afgeleid aangepast besturingselement kan worden aangeroepen.

Met de volgende code klikt u bijvoorbeeld op een selectievakje van 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

Systeemeigen Windows-methoden gebruiken

Windows biedt methoden die u kunt aanroepen om muisbewegingen en klikken zoals User32.dll SendInput en User32.dll SetCursorPoste simuleren. In het volgende voorbeeld wordt de muiscursor verplaatst naar het midden van een besturingselement:

[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

Zie ook