7

在 .NET 中,您可以使用and轻松获取a 的光标位置TextBox(即“当前行”)的行号:GetLineFromCharIndexSelectionStart

var currentLine = textBox1.GetLineFromCharIndex(textBox1.SelectionStart);

是否有一种“干净/原生”的方式将光标设置在 a 的给定行中Textbox(即设置“当前行”)?或者至少是一种“干净/原生”的方式来获取给定行的第一个字符的 char 索引(类似于getCharIndexFromLine,与我之前放置的函数相反)?

一种方法是遍历the属性的第一个N-1元素并将它们的长度加上换行符的长度。还有什么想法吗?LinesTextBox

4

2 回答 2

5

有一个GetFirstCharIndexFromLine()可用的功能:

int myLine = 3;
int pos = textBox1.GetFirstCharIndexFromLine(myLine);
if (pos > -1) {
  textBox1.Select(pos, 0);
}
于 2013-07-21T12:23:43.260 回答
1

这是我能想到的最好的:

private void SetCursorLine(TextBox textBox, int line)
{
    int seed = 0, pos = -1;
    line -= 1;

    if(line == 0) pos = 0;
    else
        for (int i = 0; i < line; i++)
        {
            pos = textBox.Text.IndexOf(Environment.NewLine, seed) + 2;
            seed = pos;
        }

    if(pos != -1) textBox.Select(pos, 0);
}

如果您想从 0 开始计算行数,请删除该line -= 1;段。

于 2013-07-21T06:59:53.970 回答