Keychar

Signaler
Messages postés
183
Date d'inscription
samedi 24 mars 2007
Statut
Membre
Dernière intervention
30 mars 2013
-
Messages postés
6
Date d'inscription
mercredi 6 avril 2011
Statut
Membre
Dernière intervention
16 décembre 2011
-
Bonsoir car il fait soir chez moi lol,

J'ai un petit souci, pas de bug ni rien sauf que je n'ai pas le résultat que je souhaite. Bon, avant de vous dire ce que c'est mon problème, voici mon code :

[b]Private Sub txtuser_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtuser.KeyPress
If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
If Me.txtuser.Text = "" Then
MsgBox("Ce champ est obligatoire. Veuillez le remplir.", MsgBoxStyle.Information, "Madrassati")
Else
Me.txtpass.Focus()
End If
Else
If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Tab) Then
MsgBox("Pour atteindre le champ suivant, veuillez cliquez sur ENTRER", MsgBoxStyle.Information, "toto")
End If
End If
End Sub/b

Voilà, que je clique sur ENTRER j'obtiens le résultat désiré et quand je clique sur TABULATION je ne reçois pas le message mais le focus passe directement au bouton.

D'après vous pourquoi ?

Merci.
A voir également:

6 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
66
pas confondre KeyCode et KeyChar

les touches F1 à F12, par exemple, ne génèrent pas de caractère ASCII

du coup, pas de KeyPress pour ces touches, juste KeyDown/KeyUp.


Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
salut,

en effet, au down ou up

et en vb.net de préférence...
(ps : j'ai mis ENTER mais c'est peut-être RETURN... à vérifier)

    Private Sub txtuser_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtuser.KeyDown
        If e.KeyCode = Keys.Enter Then
            If txtuser.Text.Length = 0 Then
                MessageBox.Show("Ce champ est obligatoire. Veuillez le remplir.", "Madrassati", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Else
                txtpass.Focus()
            End If
        ElseIf e.KeyCode = Keys.Tab Then
            MessageBox.Show("Pour atteindre le champ suivant, veuillez cliquez sur ENTRER", "toto", MessageBoxButtons.OK, MessageBoxIcon.Information)
        End If
    End Sub


[hr]
Messages postés
183
Date d'inscription
samedi 24 mars 2007
Statut
Membre
Dernière intervention
30 mars 2013

Bonjour,

Merci pour vos réponses.
J'ai utilisé le down avec la méthode que vous venez de me montrer. Pour la touche ENTER ou RETURN (ils marchent tous les deux avec la touche ENTRER) j'obtiens le résultat désiré, mais quand je clique sur TAB le focus passe au composant suivant et ce n'est pas ce que je désire, car au lieu de passer au composant suivant, il doit m'afficher un message.
C'est mon souci, car même avec le KeyPress j'obtiens le même résultat.

Merci.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
66
pas possible d'utiliser l'evenement de perte de focus, ou de validation ?


Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
183
Date d'inscription
samedi 24 mars 2007
Statut
Membre
Dernière intervention
30 mars 2013

Désolé mais je n'ai pas compris votre question.
Messages postés
6
Date d'inscription
mercredi 6 avril 2011
Statut
Membre
Dernière intervention
16 décembre 2011

j'ai le meme probleme:
Private Shadows Sub grptxt_keypress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles grptxt.KeyPress
If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
MsgBox("ça marche..?")

ET CELA NE MARCHE MALHEURESEMENT PAS..

merci de me proposer une solution

non novae sed nova... (rien de nouveau sauf la manière)