"taille" ou nombre maximal de caractères dans une RichTextBox

Résolu
gregml Messages postés 89 Date d'inscription samedi 17 mai 2014 Statut Membre Dernière intervention 16 juin 2017 - 30 juin 2014 à 18:33
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 - 1 juil. 2014 à 08:57
Bonjour,
Cette fois, je suis vraiment désolé de demander à la "communauté" ce petit programme mais j'ai eu beau essayer plusieurs formules, je n'ai toujours pas réussi à résoudre mon problème, que je vais détailler maintenant.

J'essaie tout simplement de limiter le nombre de caractères entrés au clavier par l'utilisateur dans une RichTextBox.

Ce qui me paraissait simple s'avère pour moi un travail de galérien.
J'ai tenté de mettre un MaxLenght dans les propriétés de la RichTextBox, de faire des boucles While ... End While avec tantôt des MaxLenght, tantôt des Len(RichTextBox)...rien n'y fait.

Si quelqu'un avait la gentillesse de m'indiquer comment compter chaque caractère frappé et à imposer de remplir une autre RichTextBox quand on est arrivé au maximum autorisé dans la RichTextBox1.

Merci beaucoup,
Grég

8 réponses

Zermelo Messages postés 378 Date d'inscription samedi 22 septembre 2012 Statut Membre Dernière intervention 13 août 2017 14
30 juin 2014 à 19:06
Bonsoir gregml.
Voici un très petit code qui devrait vous convenir. RTB est un contrôle RichTextBox.

Public Class Accueil
    Private n As Integer = 0

    Private Sub RTB_KeyDown(sender As Object, e As KeyEventArgs) Handles RTB.KeyDown
        n = n + 1 : If n > 3 Then e.SuppressKeyPress = True
    End Sub

End Class 

Cordialement.
0
gregml Messages postés 89 Date d'inscription samedi 17 mai 2014 Statut Membre Dernière intervention 16 juin 2017
30 juin 2014 à 19:23
Merci beaucoup Zermelo de ton code.
Je l'ai retranscris mais Par contre, VB.Net ne me "prend" pas 'SuppressKeyPress'...

Dommage car ça a l'air super simple.
Grég
0
Zermelo Messages postés 378 Date d'inscription samedi 22 septembre 2012 Statut Membre Dernière intervention 13 août 2017 14
30 juin 2014 à 19:57
Pouvez-vous me montrer votre retranscription ?
Le SuppressKeyPress ne fonctionne qu'avec les événements KeyDown et KeyUp.
0
gregml Messages postés 89 Date d'inscription samedi 17 mai 2014 Statut Membre Dernière intervention 16 juin 2017
30 juin 2014 à 20:45
Pas de problème. Voici le code en son entier, avec une Form qui contient une RichTextBox.

Option Strict On
Option Explicit On
Imports ImageSur_Form
Imports Microsoft.Office.Interop
Imports Microsoft.Office.Interop.Word

Public Class Form1
Dim oWord As New Word.Apllication
Dim n As Integer =0

Private Sub RichTextBox1_KeyDown(Byval sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles RichTextBox1.KeyDown
n = n+1 : If n>15 Then e.SuppressKeyPress = True
End Sub

End Class


Il y a une erreur avant exécution au KeyDown du

Handles RichTextBox1.KeyDown


et une à :

e.SuppressKeyPress


Grég
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
30 juin 2014 à 23:20
Bonjour
Je n'ai pas compris que veux tu dire par
J'essaie tout simplement de limiter le nombre de caractères entrés au clavier par l'utilisateur dans une RichTextBox.
maxlength est le nombre total de caractères
si maxlength =100 je suis limité à 100 caractères
0

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

Posez votre question
gregml Messages postés 89 Date d'inscription samedi 17 mai 2014 Statut Membre Dernière intervention 16 juin 2017
30 juin 2014 à 23:25
Salut,
Ca y est, j'ai quelquechose :
en écrivant

Private Sub RichTextBox1_KeyPress(Byval sender As System.Object, _
 e As System.Windows.Forms.KeyPressEventArgs) Handles RichTextBox1.KeyPress
If Len(RichTextBox1.Text)>RichTextBox1.MaxLenght then MSgbox("Oups")
End If
End Sub


La saisie des caractères s'arrête effectivement à celle définie dans la propriété MaxLenght de la RichTextBox1. Par contre, pas de message Oups (en fait je voulais surtout que dès que l'on atteint la limite MaxLenght, on aille "écrire" dans une autre RichTextBox)... d'où le fait que je me soucie du 'Oups'...
Greg
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
30 juin 2014 à 23:49
Par contre, pas de message Oups
normal car
Len(RichTextBox1.Text)>RichTextBox1 est toujours false
0
jordane45 Messages postés 37727 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 28 septembre 2023 342
30 juin 2014 à 23:53
Bonsoir...
Je dirai surtout que :
If Len(RichTextBox1.Text)>RichTextBox1.MaxLenght 
Ne peut jamais être vrai.. puisque tu ne peux pas taper plus de caractères que le MaxLength..
Par contre tu dois pouvoir faire un =
If Len(RichTextBox1.Text)=RichTextBox1.MaxLenght then MSgbox("Oups")
0
Whismeril Messages postés 18623 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 28 septembre 2023 629
30 juin 2014 à 23:28
Bonsoir comme le dis ShayW, si MaLength est configuré, il n'y a rien à faire d'autre:
Sur un formulaire j'ai posé un RichTextBox, et mis 15 dans la propriété MaxLength


A l'exécution je ne peux pas taper de 16eme caractère:

0
gregml Messages postés 89 Date d'inscription samedi 17 mai 2014 Statut Membre Dernière intervention 16 juin 2017
30 juin 2014 à 23:51
Oui, merci à vous deux. Je pense que nos messages se sont télescopés. J'ai depuis "compris" le truc.

Merci,Grég
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
Modifié par cs_ShayW le 1/07/2014 à 00:31
Tu ne veux pas seulement limiter le nombre de caractères mais passer le focus à une autre rtb
peut etre sers toi d'un boolean

private flagmax as boolean = false

Private Sub RichTextBox1_KeyPress(Byval sender As System.Object, _
e As System.Windows.Forms.KeyPressEventArgs) Handles RichTextBox1.KeyPress
if flagmax then
messagebox.show("new rtb")
exit sub
end if

If (RichTextBox1.Text).lenght = RichTextBox1.MaxLenght then
flagmax = true
else
flagmax = false
End If
End Sub
0
jordane45 Messages postés 37727 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 28 septembre 2023 342
1 juil. 2014 à 01:03
Je pense qu'Il suffit d'utiliser la méthode focus()...
If (RichTextBox1.Text).lenght = RichTextBox1.MaxLenght then 
 RichTextBox2.Focus()
end if
0
gregml Messages postés 89 Date d'inscription samedi 17 mai 2014 Statut Membre Dernière intervention 16 juin 2017
1 juil. 2014 à 08:45
J'ai tenté le code de Jordane45. Ca marche...nickel!

Un très très grand merci pour votre implication collective, surtout que j'ai souvent été "un peu dur de la feuille" et un peu "long à la comprenette". Je m'en excuse et par ailleurs, je trouve votre générosité formidable car elle ne se limite pas seulement à donner des renseignements au quidam mais va jusqu'à se mettre au niveau de l'"ignorant" en informatique.

Finalement, je suis (je pense) pas loin d'avoir tous les éléments de programmation dont j'ai besoin pour mon projet. Donc normalement, je vais pouvoir commencer à "monter" mon projet en dur. Merci,

Grég
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
1 juil. 2014 à 08:57
Oui
je viens de tester avec 10 caractères maximum
'avec keypress
  Private Sub RichTextBox1_KeyPress(ByVal sender As System.Object, _
ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles RichTextBox1.KeyPress

If RichTextBox1.Text.Length = RichTextBox1.MaxLength Then
RichTextBox2.Focus()

End If
End Sub

'avec keyup

Private Sub RichTextBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles RichTextBox1.KeyUp
If RichTextBox1.Text.Length = RichTextBox1.MaxLength Then
RichTextBox2.Focus()

End If
End Sub

Il y a une diffférence entre les deux
avec keypress quand on frappe le 11 iem caractères le focus passe
avec keyup après avoir frappé le 10iem caractères le focus passe

il y a une différence entre les deux
0
Rejoignez-nous