如何使用C#滚动到WinForms TextBox中的指定行?

ali*_*scu 13 c# textbox line winforms

如何使用C#滚动到WinForms TextBox中的指定行?

谢谢

dom*_*mer 28

以下是滚动到选择的方式:

textBox.ScrollToCaret();
Run Code Online (Sandbox Code Playgroud)

要滚动到指定的行,可以循环遍历TextBox.Lines属性,总计它们的长度以查找指定行的开头,然后设置TextBox.SelectionStart以定位插入符.

这个(未经测试的代码)的一些东西:

int position = 0;

for (int i = 0; i < lineToGoto; i++)
{
    position += textBox.Lines[i].Length;
}

textBox.SelectionStart = position;

textBox.ScrollToCaret();
Run Code Online (Sandbox Code Playgroud)

  • 或者,"position = textBox.Text.Length"以避免循环. (3认同)

Tim*_*nke 10

    private void MoveCaretToLine(TextBox txtBox, int lineNumber)
    {
        txtBox.HideSelection = false;
        txtBox.SelectionStart = txtBox.GetFirstCharIndexFromLine(lineNumber - 1);
        txtBox.SelectionLength = txtBox.Lines[lineNumber - 1].Length;
        txtBox.ScrollToCaret();
    }
Run Code Online (Sandbox Code Playgroud)