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š.

Důležité

Dokumentace k desktopové příručce pro .NET 7 a .NET 6 se právě připravuje.

Události

Většinaudálostch OnEventNameOnMouseMove 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 OnMouseMoveListBox 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.ButtonSystem.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é