Bagikan melalui


Cara mensimulasikan peristiwa mouse (Formulir Windows .NET)

Mensimulasikan peristiwa mouse di Formulir Windows tidak lurus ke depan seperti mensimulasikan peristiwa keyboard. Formulir Windows tidak menyediakan kelas pembantu untuk memindahkan mouse dan memanggil tindakan klik mouse. Satu-satunya opsi untuk mengontrol mouse adalah menggunakan metode Windows asli. Jika Anda bekerja dengan kontrol kustom atau formulir, Anda dapat mensimulasikan peristiwa mouse, tetapi Anda tidak dapat langsung mengontrol mouse.

Penting

Dokumentasi Panduan Desktop untuk .NET 7 dan .NET 6 sedang dibangun.

Aktivitas

Sebagian besar peristiwa memiliki metode yang sesuai yang memanggilnya, dinamai dalam pola On diikuti oleh EventName, seperti OnMouseMove. Opsi ini hanya dimungkinkan dalam kontrol atau formulir kustom, karena metode ini dilindungi dan tidak dapat diakses dari luar konteks kontrol atau formulir. Kerugian untuk menggunakan metode seperti OnMouseMove tidak benar-benar mengontrol mouse atau berinteraksi dengan kontrol, itu hanya meningkatkan peristiwa terkait. Misalnya, jika Anda ingin mensimulasikan mengarahkan kursor ke item dalam ListBox, OnMouseMove dan ListBox tidak bereaksi secara visual dengan item yang disorot di bawah kursor.

Metode yang dilindungi ini tersedia untuk mensimulasikan peristiwa mouse.

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

Untuk informasi selengkapnya tentang peristiwa ini, lihat Menggunakan peristiwa mouse (Formulir Windows .NET)

Memanggil klik

Mengingat sebagian besar kontrol melakukan sesuatu saat diklik, seperti tombol memanggil kode pengguna, atau kotak centang mengubah status dicentang, Formulir Windows menyediakan cara mudah untuk memicu klik. Beberapa kontrol, seperti kotak kombo, tidak melakukan sesuatu yang istimewa saat diklik dan mensimulasikan klik tidak berpengaruh pada kontrol.

PerformClick

Antarmuka System.Windows.Forms.IButtonControl menyediakan PerformClick metode yang mensimulasikan klik pada kontrol. System.Windows.Forms.Button Kedua kontrol dan System.Windows.Forms.LinkLabel mengimplementasikan antarmuka ini.

button1.PerformClick();
Button1.PerformClick()

InvokeClick

Dengan formulir kontrol kustom, gunakan InvokeOnClick metode untuk mensimulasikan klik mouse. Ini adalah metode terlindungi yang hanya dapat dipanggil dari dalam formulir atau kontrol kustom turunan.

Misalnya, kode berikut mengklik kotak centang dari 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

Menggunakan metode Windows asli

Windows menyediakan metode yang dapat Anda panggil untuk mensimulasikan gerakan mouse dan klik seperti User32.dll SendInput dan User32.dll SetCursorPos. Contoh berikut memindahkan kursor mouse ke tengah kontrol:

[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

Baca juga