Simulace událostí myši (model Windows Forms .NET)
Simulace událostí myši v model Windows Forms není tak přímočará jako simulace událostí klávesnice. model Windows Forms neposkytuje pomocnou třídu pro přesunutí myši a vyvolání akcí kliknutí myší. Jedinou možností pro ovládání myši je použití nativních metod Systému Windows. Pokud pracujete s vlastním ovládacím prvku nebo formulářem, můžete simulovat událost myši, ale nemůžete přímo ovládat myš.
Události
Většinaudálostch On
EventName
OnMouseMove
Tato možnost je možná jenom v rámci vlastních ovládacích prvků nebo formulářů, protože tyto metody jsou chráněné a nelze k němu přistupovat mimo kontext ovládacího prvku nebo formuláře. Nevýhodou použití metody, jako OnMouseMove
je například to, že ve skutečnosti neřídí myš nebo interaguje s ovládacím prvku, jednoduše vyvolá přidruženou událost. Pokud například chcete simulovat najetí myší na položku v objektu ListBoxa OnMouseMove
ListBox
vizuálně nereaguje se zvýrazněnou položkou pod kurzorem.
Tyto chráněné metody jsou k dispozici pro simulaci událostí myši.
OnMouseDown
OnMouseEnter
OnMouseHover
OnMouseLeave
OnMouseMove
OnMouseUp
OnMouseWheel
OnMouseClick
OnMouseDoubleClick
Další informace o těchto událostech naleznete v tématu Použití událostí myši (model Windows Forms .NET)
Vyvolání kliknutí
Vzhledem k tomu, že většina ovládacích prvků něco dělá při kliknutí, jako je tlačítko volající uživatelský kód, nebo zaškrtávací políčko změnit jeho zaškrtnutý stav, model Windows Forms poskytuje snadný způsob, jak aktivovat kliknutí. Některé ovládací prvky, například pole se seznamem, nedělají nic zvláštního, když kliknete a simuluje kliknutí, nemá na ovládací prvek žádný vliv.
PerformClick
Rozhraní System.Windows.Forms.IButtonControl poskytuje metodu PerformClick , která simuluje kliknutí na ovládací prvek. System.Windows.Forms.Button System.Windows.Forms.LinkLabel Toto rozhraní implementují oba ovládací prvky.
button1.PerformClick();
Button1.PerformClick()
InvokeClick
S formulářem vlastního ovládacího prvku pomocí InvokeOnClick metody simulujte kliknutí myší. Jedná se o chráněnou metodu, kterou lze volat pouze z formuláře nebo odvozeného vlastního ovládacího prvku.
Například následující kód klikne na zaškrtávací políčko z 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
Použití nativních metod Windows
Systém Windows poskytuje metody, které můžete volat k simulaci pohybu myši a kliknutí, například User32.dll SendInput
a User32.dll SetCursorPos
. Následující příklad přesune kurzor myši na střed ovládacího prvku:
[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
Viz také
.NET Desktop feedback