Bagikan melalui


Menggunakan peristiwa mouse (Formulir Windows .NET)

Sebagian besar program Formulir Windows memproses input mouse dengan menangani peristiwa mouse. Artikel ini memberikan gambaran umum tentang peristiwa mouse, termasuk detail tentang kapan harus menggunakan setiap peristiwa dan data yang disediakan untuk setiap peristiwa. Untuk informasi selengkapnya tentang peristiwa secara umum, lihat Gambaran umum peristiwa (Formulir Windows .NET).

Penting

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

Peristiwa mouse

Cara utama untuk merespons input mouse adalah dengan menangani peristiwa mouse. Tabel berikut ini memperlihatkan peristiwa mouse dan menjelaskan kapan peristiwa tersebut dinaikkan.

Peristiwa Mouse Deskripsi
Click Kejadian ini terjadi ketika tombol mouse dirilis, biasanya sebelum MouseUp peristiwa. Handler untuk kejadian ini menerima argumen jenis EventArgs. Tangani kejadian ini saat Anda hanya perlu menentukan kapan klik terjadi.
MouseClick Kejadian ini terjadi ketika pengguna mengklik kontrol dengan mouse. Handler untuk kejadian ini menerima argumen jenis MouseEventArgs. Tangani kejadian ini ketika Anda perlu mendapatkan informasi tentang mouse ketika klik terjadi.
DoubleClick Kejadian ini terjadi ketika kontrol diklik dua kali. Handler untuk kejadian ini menerima argumen jenis EventArgs. Tangani peristiwa ini ketika Anda hanya perlu menentukan kapan klik ganda terjadi.
MouseDoubleClick Kejadian ini terjadi ketika pengguna mengklik dua kali kontrol dengan mouse. Handler untuk kejadian ini menerima argumen jenis MouseEventArgs. Tangani kejadian ini ketika Anda perlu mendapatkan informasi tentang mouse ketika klik ganda terjadi.
MouseDown Kejadian ini terjadi ketika penunjuk mouse berada di atas kontrol dan pengguna menekan tombol mouse. Handler untuk kejadian ini menerima argumen jenis MouseEventArgs.
MouseEnter Peristiwa ini terjadi ketika penunjuk mouse memasuki batas atau area klien kontrol, tergantung pada jenis kontrol. Handler untuk kejadian ini menerima argumen jenis EventArgs.
MouseHover Kejadian ini terjadi ketika penunjuk mouse berhenti dan bersandar di atas kontrol. Handler untuk kejadian ini menerima argumen jenis EventArgs.
MouseLeave Kejadian ini terjadi ketika penunjuk mouse meninggalkan batas atau area klien kontrol, tergantung pada jenis kontrol. Handler untuk kejadian ini menerima argumen jenis EventArgs.
MouseMove Kejadian ini terjadi ketika penunjuk mouse bergerak saat berada di atas kontrol. Handler untuk kejadian ini menerima argumen jenis MouseEventArgs.
MouseUp Kejadian ini terjadi ketika penunjuk mouse berada di atas kontrol dan pengguna melepaskan tombol mouse. Handler untuk kejadian ini menerima argumen jenis MouseEventArgs.
MouseWheel Kejadian ini terjadi ketika pengguna memutar roda mouse saat kontrol memiliki fokus. Handler untuk kejadian ini menerima argumen jenis MouseEventArgs. Anda dapat menggunakan Delta properti untuk MouseEventArgs menentukan seberapa jauh mouse telah menggulir.

Informasi mouse

MouseEventArgs dikirim ke penangan peristiwa mouse yang terkait dengan mengklik tombol mouse dan melacak gerakan mouse. MouseEventArgs menyediakan informasi tentang status mouse saat ini, termasuk lokasi penunjuk mouse dalam koordinat klien, tombol mouse mana yang ditekan, dan apakah roda mouse telah digulir. Beberapa peristiwa mouse, seperti yang dinaikkan ketika penunjuk mouse telah memasuki atau meninggalkan batas kontrol, mengirim EventArgs ke penanganan aktivitas tanpa informasi lebih lanjut.

Jika Anda ingin mengetahui status tombol mouse saat ini atau lokasi penunjuk mouse, dan Anda ingin menghindari penanganan peristiwa mouse, Anda juga dapat menggunakan MouseButtons properti dan MousePosition kelas Control . MouseButtons mengembalikan informasi tentang tombol mouse mana yang saat ini ditekan. mengembalikan MousePosition koordinat layar penunjuk mouse dan setara dengan nilai yang dikembalikan oleh Position.

Mengonversi Antara Koordinat Layar dan Klien

Karena beberapa informasi lokasi mouse berada dalam koordinat klien dan beberapa berada dalam koordinat layar, Anda mungkin perlu mengonversi titik dari satu sistem koordinat ke sistem koordinat lainnya. Anda dapat melakukan ini dengan mudah dengan menggunakan PointToClient metode dan PointToScreen yang tersedia di Control kelas .

Perilaku peristiwa Klik Standar

Jika Anda ingin menangani peristiwa klik mouse dalam urutan yang tepat, Anda perlu mengetahui urutan peristiwa klik dinaikkan dalam kontrol Formulir Windows. Semua kontrol Formulir Windows menaikkan peristiwa klik dalam urutan yang sama ketika tombol mouse yang didukung ditekan dan dirilis, kecuali jika dicatat dalam daftar berikut untuk kontrol individual. Daftar berikut menunjukkan urutan peristiwa yang dinaikkan untuk satu klik tombol mouse:

  1. MouseDown Acara.
  2. Click Acara.
  3. MouseClick Acara.
  4. MouseUp Acara.

Berikut ini adalah urutan peristiwa yang dinaikkan untuk klik tombol mouse ganda:

  1. MouseDown Acara.

  2. Click Acara.

  3. MouseClick Acara.

  4. MouseUp Acara.

  5. MouseDown Acara.

  6. DoubleClick Acara.

    Ini dapat bervariasi, tergantung pada apakah kontrol yang dimaksud memiliki bit gaya yang StandardDoubleClick diatur ke true. Untuk informasi selengkapnya tentang cara mengatur sedikit ControlStyles , lihat SetStyle metode .

  7. MouseDoubleClick Acara.

  8. MouseUp Acara.

Kontrol individual

Kontrol berikut ini tidak sesuai dengan perilaku peristiwa klik mouse standar:

Perilaku melukis kontrol pengalih

Alihkan kontrol, seperti kontrol yang berasal dari ButtonBase kelas , memiliki perilaku lukisan khas berikut dalam kombinasi dengan peristiwa klik mouse:

  1. Pengguna menekan tombol mouse.

  2. Kontrol melukis dalam keadaan tertekan.

  3. Acara MouseDown dinaikkan.

  4. Pengguna merilis tombol mouse.

  5. Kontrol melukis dalam keadaan terangkat.

  6. Acara Click dinaikkan.

  7. Acara MouseClick dinaikkan.

  8. Acara MouseUp dinaikkan.

    Catatan

    Jika pengguna memindahkan penunjuk keluar dari kontrol pengalih saat tombol mouse tidak berfungsi (seperti memindahkan mouse dari Button kontrol saat ditekan), kontrol pengalih akan mengecat dalam keadaan dinaikkan dan hanya peristiwa yang MouseUp terjadi. Peristiwa Click atau MouseClick tidak akan terjadi dalam situasi ini.

Baca juga