L'événement key up est déclenché lorsqu'une clé est relâchée. Cela est vrai pour les touches normales comme a, b etc. Cependant, maintenir la touche fléchée ou la touche d'échappement produit des résultats différents. Au lieu de déclencher un événement key up lorsque la touche est relâchée, elle se déclenche peu après l'événement de touche enfoncée. Ainsi, maintenir une touche fléchée devient égal à appuyer et relâcher la touche plusieurs fois très rapidement. Toute explication et contourner pour déterminer quand la clé est réellement libérée?événements de clavier dans .NET
Répondre
L'événement KeyUp n'est pas réellement déclenché (pour toutes les clés, pas seulement les touches fléchées, etc.) jusqu'à ce que vous relâchiez la touche, il y a juste plusieurs événements KeyDown répétés. Au moins, c'est comme ça que ça me vient d'un code de test.
Ma solution consiste à désactiver le gestionnaire KeyDown après un événement est détecté en utilisant KeyDown
RemoveHandler Me.KeyDown, AddressOf Form1_KeyDown
puis re-validation lorsque l'événement KeyUp est déclenché.
AddHandler Me.KeyDown, AddressOf Form1_KeyDown
Bien sûr, si vous voulez gérer plusieurs pressions simultanées, cela ne fonctionnera pas. Vous devrez stocker si la clé en question est déjà en panne et ignorer l'événement KeyDown respectif.
Je viens de rencontrer un problème similaire. gestionnaire de clavier se comporte bizarre:
Si le focus et les gestionnaires sont en zone de texte:
- Lorsque la touche alphanumérique enfoncée, je suis arrivé plusieurs événements presse et vers le bas
- Les flèches et les touches de fonction produisent des événements multiples vers le bas
Si vous gérez des événements pour un formulaire avec KeyPreview activé, seul l'événement KeyUp pour les touches fléchées est géré.
Il est possible de gérer toutes les clés au niveau inférieur en remplaçant ProcessCmdKey.
Si vous souhaitez gérer une flèche gauche:
Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As Boolean
Select Case keyData
Case Keys.Left
Debug.WriteLine("Left")
Return True
Case Else
Return MyBase.ProcessCmdKey(msg, keyData)
End Select
End Function
- 1. Événements de clavier C++ Win32
- 2. Mapping clavier dans .NET
- 3. Recevoir des événements clavier iPhone
- 4. Clavier à l'écran .NET Kiosk
- 5. Comment déterminer quel contrôle mange mes événements de clavier
- 6. Comment tester les événements du clavier jQuery?
- 7. Supprimer les événements de clavier pour les champs de saisie
- 8. Puis-je capturer des événements de clavier Windows Mobile PIE?
- 9. Prise en charge des événements de clavier Flex 3
- 10. .NET inter-processus "événements"
- 11. Accès direct aux événements de clavier sous OSX
- 12. Transfert/relayer les événements .NET
- 13. Capture d'événements de clavier dans Dojox GFX
- 14. gestion d'événements de clavier
- 15. wxPython - Piégeage de la souris et du clavier Événements sans fenêtre Focalisation
- 16. Comment désactiver les événements clavier et souris dans une partie de l'arborescence visuelle sans utiliser IsEnabled?
- 17. gérer les événements clavier/raccourcis dans le contrôle de navigateur Web hébergé
- 18. événement de clavier
- 19. Gestion de clavier Winform
- 20. .NET + COM modifié le comportement de routage du clavier
- 21. déclencher des événements "sur le fil" dans .net
- 22. asp événements .net dans les contrôles chargés dynamiquement (Telerik)
- 23. .NET Événements plus communs dans winform que webform?
- 24. Y aura-t-il une solution pour les événements globaux dans les applications .NET?
- 25. Événements COM + avec C# et .NET
- 26. clavier personnalisé dans iphone
- 27. Écoutez les événements: en HTML à partir de .NET
- 28. Ordre des événements de contrôle du serveur ASP .Net
- 29. Pourquoi les événements de saisie au clavier ne se produisent-ils pas en mode plein écran?
- 30. événements clés