在.NET TextBox上设置光标的当前行

时间:2013-07-21 06:27:30

标签: c# .net vb.net

在.NET中,您可以使用TextBox和{{轻松获取 GetLineFromCharIndex的光标位置的行号(即“当前行”) 1}}:

SelectionStart

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

执行此操作的方法包括迭代getCharIndexFromLine的{​​{1}}属性的第一个N-1元素,并将它们的长度加上换行符的长度相加。还有其他想法吗?

2 个答案:

答案 0 :(得分:5)

有一个GetFirstCharIndexFromLine()功能可用:

int myLine = 3;
int pos = textBox1.GetFirstCharIndexFromLine(myLine);
if (pos > -1) {
  textBox1.Select(pos, 0);
}

答案 1 :(得分: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;段。