Couinement lors de la frappe sur la touche "Entrée" [Résolu]

Signaler
-
 Zermelo -
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

Messages postés
693
Date d'inscription
samedi 18 mai 2002
Statut
Membre
Dernière intervention
17 avril 2017
2
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
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.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
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.
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 : ×
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 : ×
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
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.
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 : ×