2010-12-01 12 views
4

C#を使用してRichTextBoxコントロールの指定された行番号にスクロールするにはどうすればよいですか?それはWinFormsのバージョンです。C#を使用してRichTextBoxコントロールの指定された行番号にスクロールするにはどうすればよいですか?

+0

どのrtb? WinFormsまたはWPF? –

+0

@Henk:Winformsです。 –

+0

私はあなたがWin32 APIでできると信じています。 http://www.codeproject.com/KB/vb/VbNetScrolling.aspx C#で行うには、RichTextBoxコントロールのウィンドウプロシージャを実装する必要があります。 http://msdn.microsoft.com/en- us/library/system.windows.forms.richtextbox.wndproc.aspx –

答えて

8

このようなことを試すことができます。

void ScrollToLine(int lineNumber) 
    { 
     if (lineNumber > richTextBox1.Lines.Count()) return; 

     richTextBox1.SelectionStart = richTextBox1.Find(richTextBox1.Lines[lineNumber]); 
     richTextBox1.ScrollToCaret(); 
    } 

リッチテキストボックス内で多くの繰り返しがある場合、これは完全に機能しません。私はそれがあなたに何らかの役に立つかもしれないことを願っています。

+1

ありがとう、それはまさに必要なものです。 –

+1

これは私にとって危険です。目的の行が複数回出現すると、コードは常に最初の出現にジャンプします。 – boboes

0

それは、このための方法を持っている場合、私は、わからないんだけど、どのようにTextに改行を数えについて、その後は(SelectionStartSelectionLength経由)キャレットを設定し、ScrollToCaret()

-1

この状況では、テキストを分割するのに役立ちますか?たとえば :

string[] lines = myRichTextBox.Text.Split('\n');
int linesCount = lines.Length;

これは、あなたの行の数を教えてくれます。

+0

ちょっと@TeenMrドラゴン。この質問は数年前に提起され、あなたが見ることができるように、受け入れられた答えがあります。あなたの答えは、元の投稿が指定された行にスクロールする方法を尋ねて以来、元のポスターを援助していません。もっと良い解決策が見つかるかどうかをもう一度見てみましょう。私は今のところdownvotingですが、あなたが質問に答えることができるなら、私はupvoteします。あなたがそれを編集したときに私にコメントを送ってください、そして、私は見ていきます。 – mttdbrd

1

このコードでは、カーソルが目的の行の最初の列にジャンプします。

どんな場合でも完璧に動作します。

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); 
} 
関連する問題