"taille" ou nombre maximal de caractères dans une RichTextBox [Résolu]

Messages postés
89
Date d'inscription
samedi 17 mai 2014
Dernière intervention
16 juin 2017
- - Dernière réponse : cs_ShayW
Messages postés
3247
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
26 décembre 2018
- 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
Afficher la suite 

Votre réponse

8 réponses

Messages postés
378
Date d'inscription
samedi 22 septembre 2012
Dernière intervention
13 août 2017
13
0
Merci
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.
Commenter la réponse de Zermelo
Messages postés
89
Date d'inscription
samedi 17 mai 2014
Dernière intervention
16 juin 2017
0
Merci
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
Zermelo
Messages postés
378
Date d'inscription
samedi 22 septembre 2012
Dernière intervention
13 août 2017
13 -
Pouvez-vous me montrer votre retranscription ?
Le SuppressKeyPress ne fonctionne qu'avec les événements KeyDown et KeyUp.
Commenter la réponse de gregml
Messages postés
89
Date d'inscription
samedi 17 mai 2014
Dernière intervention
16 juin 2017
0
Merci
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
Commenter la réponse de gregml
Messages postés
3247
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
26 décembre 2018
51
0
Merci
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
Commenter la réponse de cs_ShayW
Messages postés
89
Date d'inscription
samedi 17 mai 2014
Dernière intervention
16 juin 2017
0
Merci
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
cs_ShayW
Messages postés
3247
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
26 décembre 2018
51 -
Par contre, pas de message Oups
normal car
Len(RichTextBox1.Text)>RichTextBox1 est toujours false
jordane45
Messages postés
24992
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 mars 2019
364 -
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")
Commenter la réponse de gregml
Messages postés
12919
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
20 mars 2019
350
0
Merci
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:

Commenter la réponse de Whismeril
Messages postés
89
Date d'inscription
samedi 17 mai 2014
Dernière intervention
16 juin 2017
0
Merci
Oui, merci à vous deux. Je pense que nos messages se sont télescopés. J'ai depuis "compris" le truc.

Merci,Grég
Commenter la réponse de gregml
Messages postés
3247
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
26 décembre 2018
51
0
Merci
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
jordane45
Messages postés
24992
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 mars 2019
364 -
Je pense qu'Il suffit d'utiliser la méthode focus()...
If (RichTextBox1.Text).lenght = RichTextBox1.MaxLenght then 
 RichTextBox2.Focus()
end if
gregml
Messages postés
89
Date d'inscription
samedi 17 mai 2014
Dernière intervention
16 juin 2017
-
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
cs_ShayW
Messages postés
3247
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
26 décembre 2018
51 -
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
Commenter la réponse de cs_ShayW

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.