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
.NET Desktop feedback
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk