Point d'insertion dans un TextBox [Résolu]

Signaler
-
 Zermelo -
Bonjour à tous.

Dans un TextBox multiligne, est-il possible d'obtenir par le code le rang de la ligne dans laquelle se trouve le point l'insertion ?

Merci de me répondre.

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

7 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
Bonjour,
Question qui devient maintenant rituelle ===>>
le rang de la ligne

de quel type ? Réel (séparée par un vrai retour à la ligne) ? ou non (simple saut d'affichage dans la textbox) ?
Car ce sont là deux choses totalement différentes !

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
Je parle du rang réel. As-tu une idée ?

Oui : tout ce qui se trouve avant selectionstart (position du caret dans la textbox) === >> te donne la chaîne (appelons-là toto).
Tu éclates ( split ) cette chaîne toto en choisissant le retour charriot comme séparateur === >> Le Ubound de l'array obtenu te donne le nombre de retour-charriots.
Travaille sur ces bases.
Dans la foulée : intéresse-toi également à ceci (dans la foulée ... c'est toujours utile ...) :
=vs.71%29.aspx Tapez le texte de l'url ici.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
PS : j'espère que tu n'utilises pas une texbox en "substitut" d'une listbox. Ce serait plutôt dommage.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
30
Bonsoir,

Je te propose une petite solution qui évite des copie de chaines en split :
(Avec une belle fonction .NET toute faite )

Dim currentLine = 1
For i = 0 To TaPetiteTextBox.GetFirstCharIndexOfCurrentLine() - 1
  If TaPetiteTextBox.Text(i) = vbLf Then
    currentLine += 1
  End If
Next


_____________
Kenji
Bonjour ucfoutu.

Remarque judicieuse. Je parle du rang réel. As-tu une idée ?


Étant illettré, je signe d'une croix : ×
Non, rassure-toi, ce n'est pas un substitut. Par copier-coller, je récupère sur le net un texte dont les retours chariot sont signifiants. Toutefois cela pourrait être tentant car en Vb 2010 un TextBox possède une propriété Lignes As String() accessible en lecture-écriture. Cela me facilitera d'ailleurs le comptage des lignes que j'espérais pouvoir éviter.

Remerciements et amicales salutations.


Étant illettré, je signe d'une croix : ×
Bonjour Charles Racaud.

La procédure que tu m'as donnée ma été fort utile. Un petit détail
TaPetiteTextBox.Text(i)

ne passe pas. J'ai donc procédé à la modification suivante
Private Function RangLigne(ByVal Box As TextBox) As Integer
        Dim Rng As Integer, l As Integer, i As Integer
        With Box
            l = .GetFirstCharIndexOfCurrentLine
            For i = 0 To .Lines.Length - 1
                If .GetFirstCharIndexFromLine(i) l Then Rng i : Exit For
            Next i
        End With
        Return Rng
    End Function


Grand merci pour ton aide.


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