Bonjour,
J'utilise VB.net 2010 et J'ai crée un form qui contient plusieurs bouton.Et après la sélection d'un bouton je veux si je click sur le flèche droit du clavier la sélection se déplace vers le bouton a droite, si je click sur le flèche haut du clavier la sélection se déplace vers le bouton en haut.
J'ai essayé avec le code si dessous mais quelque soit le fleche il suit l'ordre du tabindex.
Est il possible de desactiver le tabindex? ou y a t il d autre solution?
Et j'ai trouvé dans google cette solution mais je ne sait pas comment l'adapter avec mon code ci dessous qui est expliqué avec le paragraphe en rouge
KeyPreview ne fonctionne que pour InputKeys. Certaines touches (tels que les flèches, Tab, Entrée, ...) sont considérés comme "spéciaux" et exigent des clés pré-traitement. Normalement, ces touches sont utilisées pour naviguer à travers les contrôles d'un formulaire qui peut recevoir le focus (flèches et les touches Tab) ou d'exécuter la méthode par défaut du contrôle (Ex.: la touche Entrée effectuera l'événement click d'un bouton).
Toutes les catégories sur la base des System.Windows.Forms.Control disposer d'une méthode de protection Overridable nommé IsInputKey qui renvoie true si la clé spécifiée est une clé d'entrée régulier, sinon fausse. Si elle retourne false, l'événement clé n'est pas envoyé par la forme même lorsque KeyPreview a la valeur True.
Pour éviter cela, vous pouvez sous-classe et un bouton (ou dans votre contrôle utilisateur) créer une méthode de substitution IsInputKey qui retourne vrai pour toutes les touches dont vous avez besoin et voici le code a adapter:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Protected Overrides Function IsInputKey(ByVal keyData As System.Windows.Forms.Keys) As Boolean Select Case keyData Case Keys.Up, Keys.Down, Keys.Left, Keys.Right, Keys.Enter, Keys.Tab Return True End Select End Function
Merci de m'aider
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Private Sub btn1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles button1.KeyDown If e.KeyCode = Keys.Down Then Button2.Select() End If If e.KeyCode = Keys.Right Then Button4.Select() End If If e.KeyCode = Keys.Enter Then Me.Hide() form3.Show() End If End Sub
Partager