Point d'insertion dans un TextBox

Résolu
Zermelo - 22 nov. 2012 à 20:28
 Zermelo - 23 nov. 2012 à 13:01
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

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 nov. 2012 à 20:50
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
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 nov. 2012 à 21:14
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
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 nov. 2012 à 21:22
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
3
Utilisateur anonyme
22 nov. 2012 à 21:59
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
3

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

Posez votre question
Bonjour ucfoutu.

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


Étant illettré, je signe d'une croix : ×
0
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 : ×
0
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 : ×
0
Rejoignez-nous