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 SetCursorPos
te 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
.NET Desktop feedback