Un TextBox un peu particulier :

cs_benji78 Messages postés 41 Date d'inscription lundi 19 décembre 2005 Statut Membre Dernière intervention 25 novembre 2008 - 9 juil. 2008 à 19:27
cs_benji78 Messages postés 41 Date d'inscription lundi 19 décembre 2005 Statut Membre Dernière intervention 25 novembre 2008 - 10 juil. 2008 à 22:22
Bonjour à tous j'aurais besoin de votre aide pour m'aider à résoudre mon problème:


J'aimerais concevoir un TextBox qui compte les caractère que l'utilisateur à entrer, sans prendre en compte les caractères suivant : schift, back, suppr, up down, right, et left. (et autres touches n'affichant aucun caractères.)
Et que lorsque l'utilisateur a entré 52 caractères, il insère automatiquement après la dernière touche espace préssé  "/n ".

Je ne sais pas trop comment procéder pour réaliser cela, pourriez vous m'aidez ?

9 réponses

Marneus73 Messages postés 344 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 27 octobre 2008
9 juil. 2008 à 19:42
Slt
Pour compter les caractéres :
Moi j'utilisais ça dans un de mes prog :


Compter combien de fois on a tapé certains caractères?

 

Private
Sub TextBox1_KeyPress(
ByVal
sender
As
Object,
ByVal e
As
System.Windows.Forms.KeyPressEventArgs)
Handles
TextBox1.KeyPress

Select Case e.KeyChar

' Compte les  backspaces.

Case ControlChars.Back

    Nombrebackspace = Nombrebackspace + 1

' Compte les  'ENTER' .

Case ControlChars.Lf

    Nombrereturn = Nombrereturn + 1

' Compte les  ESC .

Case Convert.ToChar(27)

    NombreEsc = NombreEsc + 1

' Compte les autres.

Case Else

    keyPressCount = keyPressCount + 1

End Select

End Sub

 


Petite parenthèse:


Pour comparer les caractères il y a 2 méthodes:

 if
e.KeyChar=Convert.ToChar(27) then

ou

 if
AscW(e.Keychar)=27 then

Dans le premier "case" tu mets tous ceux que tu ne veux pas séparés par des virgules et dans case else tu auras tout ceux que tu veux.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
9 juil. 2008 à 20:15
pensez a gérer le fait que l'utilisateur puisse faire un copier/coller
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
9 juil. 2008 à 22:36
Salut,
Tu veux simplement savoir si ta TextBox contient 52 caractères?

Facile :
Private Sub TextBox1_TextChanged(...) Handles TextBox1.TextChanged
    If TextBox1.Text.Length = 52 Then
       ...
    End If
End Sub
0
cs_benji78 Messages postés 41 Date d'inscription lundi 19 décembre 2005 Statut Membre Dernière intervention 25 novembre 2008
9 juil. 2008 à 22:55
En faite je chercher à compter le nombre de caractères entrés dans la texte box, pour pouvoir remplacer la dernière touche espace préssée avant le 52 ème caractère par " /n "

Sinon je ne vois pas trop comment utiliser la solution de Marneus73, que j'ai pu lire en même temps qu'il postait chez Mr Plasserre :).
Merci de votre aide,
a+
0

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

Posez votre question
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
10 juil. 2008 à 02:52
Ben oui justement. TextBox1.Text.Length n'est ce pas "compter" le nombre de caractères?

Private Sub TextBox1_TextChanged(...) Handles TextBox1.TextChanged
    ' compter le nombre de caractères entrés dans la texte box :
    If TextBox1.Text.Length = 52 Then
        ' remplacer la dernière touche espace préssée :
        Dim ind As Integer = TextBox1.Text.LastIndexOf(" ")
        ' par " /n " :
        Dim txt As String = TextBox1.Text.Substring(0, ind) & " /n"
    End If
End Sub

Après je ne sais pas si tu veux récupérer les caractères restant après le " /n"...
Si oui, les voici :
Dim restant As String = TextBox1.Text.Substring(ind + 1)
0
cs_benji78 Messages postés 41 Date d'inscription lundi 19 décembre 2005 Statut Membre Dernière intervention 25 novembre 2008
10 juil. 2008 à 20:57
Merci de ton aide Kevin.Ory, le code fonctionne bien sauf le partie pour récupérer les caractères suivant le " /n ";

Sinon Renfield parlait de gérer les couper, copier, coller.
Savez-vous comment procéder, et pouvez vous me l'expliquer ?
0
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
10 juil. 2008 à 21:00
dans l'évenement textchanged
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
10 juil. 2008 à 21:59
Le copier/coller fonctionne très bien avec ma solution.
"le code fonctionne bien sauf le partie pour récupérer les caractères suivant le " /n ""
C'est à dire? Cette ligne doit donc se trouver après le Dim txt As String = ...
Mais c'est claire que si il n'y a rien après le dernier espace, tu aura une erreur. De même si aucun caractère espace ne se trouve dans tes 1er 52 caractères. A toi de gérer ça.
Si tu as un long texte à découper, il faudra faire ça dans une boucle. Tout dépend le contexte.
0
cs_benji78 Messages postés 41 Date d'inscription lundi 19 décembre 2005 Statut Membre Dernière intervention 25 novembre 2008
10 juil. 2008 à 22:22
"Mais c'est claire que si il n'y a rien après le dernier espace"

J'ai testé en utlisant ce code :

Public

Class FormCEMessage
   
Public txt
As
String
   Public restant
As
String
   Public ind
As
Integer

   Private
Sub ButtonCEMessageOk_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles ButtonCEMessageOk.Click
      MessageBox.Show(txt & restant)
   
End
Sub

   Private
Sub TextBox1_TextChanged(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles TextBox1.TextChanged
      
' compter le nombre de caractères entrés dans la texte box :
      If TextBox1.Text.Length = 5
Then
         ' remplacer la dernière touche espace préssée :
         ind = TextBox1.Text.LastIndexOf(
" ")
         
' par " /n " :
         txt = TextBox1.Text.Substring(0, ind) &
" /n "
         restant = TextBox1.Text.Substring(ind + 1)
      
End
If
   End
SubEnd

Class

Lorsque je faisais mon test, j'ai eu l'impression que restant ne m'affichait que le texte situé entre la dernière touche espace préssée, et le 52 ème caractères.

"De même si aucun caractère espace ne se trouve dans tes 1er 52 caractères."

J'ai effectivement remarqué ça, mais puisque c'est un morceau de texte qui est contenu dans le TextBox, et pas une commande, il ne devrait pas y avoir de problème, je pense.

"Le copier/coller fonctionne très bien avec ma solution."
D'accords, merci bien de l'aide :).
0
Rejoignez-nous