【问题标题】:How can I scroll to a specified line number of a RichTextBox control using C#?如何使用 C# 滚动到 RichTextBox 控件的指定行号?
【发布时间】:2020-08-27 13:48:13
【问题描述】:

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

【问题讨论】:

标签: c# winforms richtextbox


【解决方案1】:

你可以试试这样的。

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

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

如果您在 RichTextBox 中有大量重复,这将无法完美运行。我希望它可能对你有用。

【讨论】:

  • 谢谢,这正是我们所需要的。
  • 这对我来说似乎很危险。当想要的行不止一次出现时,您的代码将始终跳转到第一次出现。
  • 对于长文本,这不起作用,因为它会在第一行具有相同的文本。
【解决方案2】:

使用此代码,光标会跳转到所需行的第一列。

在任何情况下都能完美运行,即使想要的行出现多次。

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

【讨论】:

  • 伟大的工作花了几个小时试图解决这个问题。这个适合我的需要。谢谢
【解决方案3】:

我不确定,如果它有这样的方法,但是如何计算Text 中的换行符,然后设置插入符号(通过SelectionStartSelectionLength)和ScrollToCaret()

【讨论】:

    【解决方案4】:

    在这种情况下拆分文本会有所帮助吗? 例如:

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

    这会告诉你行数。

    【讨论】:

    • 嘿@TeenMrDragon。这个问题是几年前提出的,如您所见,有一个公认的答案。您的回答并不能完全帮助原始海报,因为原始帖子询问如何滚动到指定的行。再看看你是否能找到更好的解决方案。我现在投反对票,但如果你能回答这个问题,我会投赞成票。编辑完后在此处给我评论,我会看一看。
    猜你喜欢
    • 1970-01-01
    • 2010-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多