Maison >développement back-end >C++ >Pourquoi mes touches fléchées ne déclenchent-elles pas l'événement KeyDown ?
Le problème :
Les touches fléchées ne parviennent parfois pas à déclencher l'événement KeyDown, à moins d'être enfoncées avec une touche de modification telle que Control.
La solution :
Ce comportement peut être corrigé en utilisant l'événement PreviewKeyDown
et en définissant explicitement e.IsInputKey
sur true
pour les pressions sur les touches fléchées. Voici le code :
<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>
Cet extrait de code s'attaque directement à la cause première : la gestion par la classe Control standard des touches fléchées comme touches de navigation. En définissant e.IsInputKey
sur true
, vous forcez l'événement KeyDown à se déclencher pour la saisie des touches fléchées, quelles que soient les touches de modification.
Considérations importantes :
TabStop
sur les contrôles focalisables ne résoudra pas ce problème.ProcessCmdKey
pour cela ; il est conçu pour la gestion des raccourcis de menu, pas pour la saisie générale des touches.Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!