Comment puis-je faire défiler jusqu'à un numéro de ligne spécifié d'une commande RichTextBox à l'aide de C #? C'est la version WinForms. P>
4 Réponses :
Je ne suis pas sûr, s'il y a une méthode pour cela, mais que diriez-vous de compter les chevreufs dans le texte code>, puis définissez le caret (via SelectionStart code> et < Code> SélectionLength code>) et
ScrollTocaret () code>? P>
Vous pouvez essayer quelque chose comme ça.
void ScrollToLine(int lineNumber) { if (lineNumber > richTextBox1.Lines.Count()) return; richTextBox1.SelectionStart = richTextBox1.Find(richTextBox1.Lines[lineNumber]); richTextBox1.ScrollToCaret(); }
Merci, c'est exactement ce qui est nécessaire.
Cela me semble dangereux. Lorsque la ligne souhaitée survient plus d'une fois, votre code va toujours passer à la première occurrence.
Pour un texte long, cela ne fonctionne pas car il va bien la première ligne qui a le même texte.
Cela aiderait-il dans cette situation à scinder le texte? Par exemple: p>
Cela vous indiquera le nombre de lignes. P> chaîne [] lignes = myrichTextbox.text.split ('\ n');
Int lignesCount = lignes.Longueur;
code> p>
Hey @teenmrragon. Cette question a été posée il y a quelques années et comme vous pouvez le constater, a une réponse acceptée. Votre réponse n'assiste pas tout à fait l'affiche originale puisque le message d'origine demande comment faire défiler une ligne spécifiée. Prenez un autre look pour voir si vous pouvez trouver une meilleure solution. Je descends pour le moment, mais je vais uppoter si vous pouvez répondre à la question. Envoyez-moi un commentaire ici quand vous l'avez édité et je vais jeter un oeil.
avec ce code, le curseur saute à la première colonne de la ligne recherchée.
Cela fonctionne parfaitement dans tous les cas strong>, même lorsque la ligne souhaitée survient plusieurs fois. P> void GotoLine(int wantedLine_zero_based) // int wantedLine_zero_based = wanted line number; 1st line = 0
{
int index = this.RichTextbox.GetFirstCharIndexFromLine(wantedLine_zero_based);
this.RichTextbox.Select(index, 0);
this.RichTextbox.ScrollToCaret();
}
Excellent travail passé des heures à essayer de comprendre cela. Celui-ci a travaillé pour mes besoins. Merci
Je crois que vous pouvez faire avec l'API Win32. Voir codeProject.com/kb/vb/vbnetscrolling.aspx pour le faire avec C #, vous devrez implémenter la procédure de fenêtre pour la commande RichTextBox: msdn.microsoft.com/en-us/library/...