2013-08-08 9 views
7

Mam RichTextBox z tysiącami linii tekstu w nim. Mogę łatwo SET pierwszą widoczną linię za pomocą ScrollToCaret() wykonując ...Uzyskaj/ustaw pierwszą widoczną linię RichTextBox

this.SelectionStart = this.Find(this.Lines[lineIndex], RichTextBoxFinds.NoHighlight); 
this.ScrollToCaret(); 

Ale chciałbym, aby móc GET pierwsza linia zbyt widoczne. Jakieś sugestie?

+1

Jak zrobić masz pojęcie "linii"? kończy się podziałem wiersza? lub po prostu linia, która może być wyrenderowana zgodnie z 'Szerokość' w' RichTextBox'? –

+0

Powinienem być bardziej jasny: moje przeprosiny. Mam na myśli pierwszą linię renderowaną zgodnie z 'Width' z' RichTextBox'. –

+0

OK, zaktualizowałem swoją odpowiedź Twoim wymaganiem. –

Odpowiedz

11

Tutaj może być to, czego potrzebujesz:

//get the first visible char index 
int firstVisibleChar = richTextBox1.GetCharIndexFromPosition(new Point(0,0)); 
//get the line index from the char index 
int lineIndex = richTextBox1.GetLineFromCharIndex(firstVisibleChar); 
//just get the string of the line 
string firstVisibleLine = richTextBox1.Lines[lineIndex]; 

za komentarz mówiąc, że chcesz Odpowiednio jakąś linię do Width z RichTextBox, można zrobić coś takiego:

int firstVisibleChar = richTextBox1.GetCharIndexFromPosition(new Point(0,0)); 
int lastChar = richTextBox1.GetCharIndexFromPosition(new Point(richTextBox1.ClientSize.Width - 1, 1)); 
string firstVisibleLine = richTextBox1.Text.Substring(firstVisibleChar, lastChar - firstVisibleChar); 
+1

Znalazłem, że muszę wstawić następujący wiersz przed wywołaniem 'richTextBox1.GetLineFromCharIndex (firstVisibleChar)' w odpowiedzi King Kong: richTextBox1.WordWrap = false; – Maverik

Powiązane problemy