Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menentukan Kekunci Papan Kekunci Mana Yang Sedang Ditekan dalam Borang Windows?

Bagaimanakah Saya Boleh Menentukan Kekunci Papan Kekunci Mana Yang Sedang Ditekan dalam Borang Windows?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-14 12:23:43843semak imbas

How Can I Efficiently Determine Which Keyboard Keys Are Currently Pressed in Windows Forms?

Cara mengesan kekunci yang sedang ditekan dalam Borang Windows dengan cekap

Dalam pembangunan Windows Forms, gunakan kelas Kursor untuk mendapatkan kedudukan masa nyata kursor dengan mudah. Walau bagaimanapun, menentukan keadaan semasa kekunci papan kekunci adalah agak rumit. Sebagai contoh, bolehkah kita menentukan sama ada kekunci Shift sedang ditekan? Dan, bolehkah kita mengelakkan pemantauan yang membosankan bagi setiap acara KeyDown dan KeyUp?

Penyelesaian:

Nasib baik, adalah mungkin untuk mengesan kekunci yang ditekan tanpa menjejaki peristiwa dengan teliti. Untuk menentukan sama ada kekunci Shift ditekan (tidak kira sama ada kekunci pengubah suai lain ditekan pada masa yang sama), anda boleh menggunakan coretan kod berikut:

<code class="language-c#">if ((Control.ModifierKeys & Keys.Shift) != 0)</code>

Kaedah ini menilai sama ada hasil operasi bitwise AND Control.ModifierKeys and Keys.Shift values ​​​​bukan sifar. Jika hasilnya benar, anda boleh membuat kesimpulan bahawa kekunci Shift telah ditekan.

Untuk memastikan hanya kekunci Shift ditekan dan tiada kekunci pengubah suai lain yang aktif, semakan boleh diperbaiki seperti berikut:

<code class="language-c#">if (Control.ModifierKeys == Keys.Shift)</code>

Jika anda bekerja dalam kelas yang mewarisi Kawalan (seperti borang), anda boleh meninggalkan rujukan Kawalan untuk menjadikan kod lebih bersih.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan Kekunci Papan Kekunci Mana Yang Sedang Ditekan dalam Borang Windows?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn