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

- - Dernière réponse :  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 : ×
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
3181
Date d'inscription
dimanche 15 février 2004
Dernière intervention
9 avril 2017
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de Charles Racaud
0
Merci
Bonjour ucfoutu.

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


Étant illettré, je signe d'une croix : ×
Commenter la réponse de Zermelo
0
Merci
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 : ×
Commenter la réponse de Zermelo
0
Merci
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 : ×
Commenter la réponse de Zermelo

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.