Form1_KeyUp

Signaler
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
-
Messages postés
1263
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
-
Bonjour à tous

 Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp
        If e.KeyData = AscW("b") Then
            MessageBox.Show("b")
        End If
    End Sub


résultat
si je frappe b le messagebox n'est pas détecté
pourquoi ?
j'ai verifié avec le debugger e.keydata = B(66)
j'ai bien frappé b (ascii = 98)
que je frappe b ou B le résultat e.keydata = B(66)

merci

10 réponses

Messages postés
540
Date d'inscription
mardi 4 août 2009
Statut
Membre
Dernière intervention
1 février 2013
1
Je sais pas si ça t'aidera à comprendre mais c'est un peu comme les écouteurs en java c.à.d que la form1 ne détecte pas l'évènement keyup parce qu'elle n'a pas le focus mais lorsque tu le fais avec un autre contrôle par exemple un textbox,ça marche sans soucis...donc il faudrait donner le focus à ta fenêtre pour que ça passe...enfin c'est ce que j'ai compris jusque là...

Ce qui compte,ce n'est pas ce qu'on a mais plutôt ce que l'on fait avec ce qu'on a...

Visual Basic .Net is the best
and vb6.0
Messages postés
540
Date d'inscription
mardi 4 août 2009
Statut
Membre
Dernière intervention
1 février 2013
1
C'est bien ce que je pensais...lorsque tu enlèves tous les autres contrôles,cela fonctionne impec!!
reste plus qu'à trouver comment le faire fonctionner malgré la présence d'autres contrôles sur la fenêtre??

Ce qui compte,ce n'est pas ce qu'on a mais plutôt ce que l'on fait avec ce qu'on a...

Visual Basic .Net is the best
and vb6.0
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
J'ai du mal expliqué
l'évenement keyup est bien détecté j'ai mis un point
d'arret quand j'appuie sur la touche b
l'évenement est détecté mais c'est la valeur
du e.KeyData que je ne comprend pas il est égale à 66 donc B (B majuscule)
et j'ai bien appuyé sur b ascii = 98
J'ai bien testé bien que c'était à 1h du matin
avec le keypress ça marche
Private Sub Form2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
        If e.KeyChar = "b" Then
            MessageBox.Show("b")
        End If
    End Sub


j'appuie sur b et le messagebox s'affiche
Messages postés
1263
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
Salut ShayW

J'ai une piste concernant ton problème.
Tu as appuyé sur la touche B. Key_up te renvoie dans son paramètre e.data le code de la touche mais en minuscule. Le key_up ne gère pas dans le paramètre e.KeyChar le fait que tu ais appuyé aussi sur Shift ( de même pour la touche ALT et CONTROL).
Je crois que c'est un autre paramètre de e qui gère la touche Shift ( idem pour ALT et CONTROL)
Ceci explique le fait que même en tapant un B majuscule ton MsgBox te renvoie toujours le code du B minuscule
Si je retrouve le paramètre e.XXXX qui gère ce cas je te fais signe

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
Messages postés
1263
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
Re salut ShayW

Je viens de vérifier sur mon PC : le paramètre e.XXXXX pour Shift et les 2 autres touches n'existe pas
Par contre en VB 6.0 la fonction était --> Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
On retrouve bien le paramètre Shift pour savoir si on a frappé la touche en majuscule ou en minuscule


La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Salut Galain
ça renvoie toujours le code de B majuscule
j'ai bien appuyé sur b(b minuscule)
mais j'ai découvert que e.KeyData donne toujours
la valeur ascii de la lettre majuscule
si on écrit dans l'éditeur du vb
e.keydata = dans la listbox qui
apparait avec tous les keys il y a bien Keys.B
mais non Keys.b
alors j'ai écrit
Private Sub Form2_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp
        If e.KeyData = Keys.B Then
            MessageBox.Show("b")
        End If

    End Sub


le résultat si j'appuie sur B le if est exécuté
normal
si j'appuie sur b aussi le if est exécuté
donc B ou b c'est pareil
Messages postés
1263
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
Exact ShayW et bonjour
Dans mon premier post il faut inverser majuscule et minuscule
Le Key_up ( idem pour Key_down mais pas sur pour Key_press) récupère le code Ascii de la touche en majuscule

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Salut
Oui
le keyup et le keydown verifie si la touche a été
appuyé sans se rapporter à la valeur de la touche
enfin ce n'est pas vraiment exact
le e.KeyData a bien une valeur laquelle ?
il est possible que une touche peut avoir plusieurs caractères si on a un clavier virtuel
comme chez moi le clavier est amériquain et le clavier français est virtuel
par ex le è c'est la touche 7
if e.KeyData = Keys.D7 then
si j'appuie sur la touche 7 et bien que je suis
sur clavier virtuel français (è)le if est exécuté
parce que c'est la meme touche
le ù c'est Keys.OemQuotes
Messages postés
540
Date d'inscription
mardi 4 août 2009
Statut
Membre
Dernière intervention
1 février 2013
1
Salut,
il semblerait que le keyup ne tient pas compte des minuscules ou des majuscules...pourquoi??j'en sais trop rien
Ce qui compte,ce n'est pas ce qu'on a mais plutôt ce que l'on fait avec ce qu'on a...

Visual Basic .Net is the best
and vb6.0
Messages postés
1263
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
Salut NSUADI

Keyup sert surtout à savoir si telle ou telle touche a été frappée sans renvoyer forcement le code Ascii de la touche en majuscule ou en minuscule.

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain