Couinement lors de la frappe sur la touche "Entrée"

Résolu
Zermelo - 26 avril 2013 à 16:15
 Zermelo - 26 avril 2013 à 18:56
Bonjour à toutes et à tous.

Sur un formulaire nommé Accueil, j'ai placé un TextBox monoligne nommé tBox et un Label nommé lBox, et j'ai écrit le code
Public Class Accueil

    Private Sub tBox_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles tBox.KeyUp
        If e.KeyCode 13 Then lBox.Text tBox.Text
    End Sub

    Private Sub tBox_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles tBox.KeyPress
        If Convert.ToUInt32(e.KeyChar) 13 Then e.KeyChar Convert.ToChar(3)
    End Sub

End Class

en vue de faire en sorte que, le TextBox étant actif, la frappe sur la touche "Entrée" provoque sans couinement le transfert dans lBox du texte contenu dans tBox. Le code de l'évènement KeyPress, trouvé par tâtonnement, me paraissant relever de la quadrisectomie capillaire longitudinale, je serais reconnaissant à qui me proposerait un code plus simple.

Remerciements anticipés.

Étant illettré, je signe d'une croix : ×

7 réponses

cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
26 avril 2013 à 16:43
Bonjour,

Pour éviter le bip (le couinement) en VB6 on code ainsi :
If KeyCode vbKeyReturn then KeyCode 0

Je suppose qu'en VB2005 ce sera :
If e.KeyCode 13 Then e.KeyCode 0: lBox.Text = tBox.Text 

Cheyenne
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 avril 2013 à 17:32
Bonjour, Zermelo,
L'évènement KeyPress me parait plus approprié, puisque travaillant avec le KeyChar
Tu devrais l'essayer, avec bien sûr la propriété Multiline à True, en t'inspirant de l'exemple donné patr MSDN ===>>
Tapez le texte de l'url ici.
et en décidant ce que tu veux si Asc(e.KeyChar) = 13
Mais, comme tu le sais, je ne suis pas VB.Nettiste et ne peux donc affirmer que ce sera bon. Essaye quand-même.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 avril 2013 à 18:38
e.Handled = True fait que la touche frappée (donc ta touche enter si elle est concernée) est ignorée.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
3
Bonjour Cheyenne.

Moi aussi j'avais cru cela. Mais en vb 2010 (je n'ai pas vb 2005), les KeyCode sont ReadOnly. D'ailleurs tous les KeyMachin le sont, sauf le KeyChar. Snif!

Merci pour votre réponse.

Étant illettré, je signe d'une croix : ×
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour ucfoutu

Si le TextBox est déclaré multiligne, la frappe de la touche Entrée est prise en compte comme un retour à la ligne. D'autre part, Asc(e.KeyChar) = 13 est obsolète en vb 2010, d'où la conversion par la classe Convert.

Étant illettré, je signe d'une croix : ×
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 avril 2013 à 18:12
Si le TextBox est déclaré multiligne, la frappe de la touche Entrée est prise en compte comme un retour à la ligne

pas si tu l'annules (regarde l'exemple du lien que je t'ai passé)

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Bonsoir.
J'ai apporté une petite modification, qui clarifie sans changer le principe
Imports System.Convert
Public Class Accueil

    Private Sub tBox_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles tBox.KeyUp
        If e.KeyCode 13 Then lBox.Text tBox.Text
    End Sub

    Private Sub tBox_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles tBox.KeyPress
        If ToChar(13) e.KeyChar Then e.KeyChar ToChar(3)
    End Sub

End Class

J'ai par ailleurs vérifié que ce code fonctionne que le TextBox soit multiligne ou non. Dans l'écriture e.KeyChar ToChar( x ), j'ai bestialement essayé à partir de x 0.


Étant illettré, je signe d'une croix : ×
0
Rejoignez-nous