2013-08-08 21 views
7

私はRichTextBoxに何千ものテキスト行を入れました。私は簡単にリッチテキストボックスの最初の表示行を取得/設定する

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

...実行してScrollToCaret()を使用して最初の可視行をSETすることができますしかし、私は最初の可視行あまりにGETにできるようにしたいと思います。助言がありますか?ここで

+1

行う方法あなたはコンセプト 'ライン'ですか?改行で終わりますか?または 'RichTextBox'の' Width'に応じてレンダリングできる行だけですか? –

+0

私はもっと明確にすべきだった:私の謝罪。私は 'RichTextBox'の' Width'にしたがってレンダリングされた最初の行を参照しています。 –

+0

あなたの要求で私の答えを更新しました –

答えて

11

は何が必要かもしれ:

あなたのコメントについては
//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]; 

あなたがRichTextBoxWidthに応じていくつかの行をしたい、あなたはこのような何かを行うことができますことを言って:

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

King Kongの答えで 'richTextBox1.GetLineFromCharIndex(firstVisibleChar)'を呼び出す前に次の行を挿入する必要があることがわかりました:richTextBox1.WordWrap = false; – Maverik

関連する問題