2010-12-01 86 views
4

如何使用C#滚动到RichTextBox控件的指定行号?这是WinForms版本。如何使用C#滚动到RichTextBox控件的指定行号?

+0

哪个RTB? WinForms或WPF? – 2010-12-01 09:59:52

+0

@亨克:这是Winforms。 – 2010-12-01 10:01:25

+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 – 2010-12-01 10:11:17

回答

8

你可以尝试这样的事情。

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

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

如果您的RichTextBox中有很多重复,这将无法完美工作。我确实希望它对你有些用处。

0

我不知道,如果它有这种方法,但如何在Text计数的换行符,然后设置插入符(通过SelectionStartSelectionLength)和ScrollToCaret()

-1

难道在这种情况下帮助分裂的文本? 例如:

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

这会告诉你的行数。

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); 
}