Masalahnya:
Kekunci anak panah kadangkala gagal mencetuskan acara KeyDown, melainkan ditekan dengan kekunci pengubah suai seperti Control.
Penyelesaian:
Tingkah laku ini boleh dibetulkan dengan menggunakan acara PreviewKeyDown
dan secara eksplisit menetapkan e.IsInputKey
kepada true
untuk menekan kekunci anak panah. Ini kodnya:
<code class="language-csharp">private void Form_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) { if (e.KeyCode == Keys.Up || e.KeyCode == Keys.Down || e.KeyCode == Keys.Left || e.KeyCode == Keys.Right) { e.IsInputKey = true; } }</code>
Coretan kod ini secara langsung menangani punca utama: pengendalian kekunci anak panah kelas Kawalan standard sebagai kekunci navigasi. Dengan menetapkan e.IsInputKey
kepada true
, anda memaksa acara KeyDown menyala untuk input kekunci anak panah, tanpa mengira kekunci pengubah suai.
Pertimbangan Penting:
TabStop
pada kawalan boleh fokus tidak akan menyelesaikan masalah ini.ProcessCmdKey
untuk ini; ia direka untuk pengendalian pintasan menu, bukan input kunci umum.Atas ialah kandungan terperinci Mengapa Kekunci Anak Panah Saya Tidak Mencetuskan Acara KeyDown?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!