在.NET中,您可以使用TextBox
和{{轻松获取 GetLineFromCharIndex
的光标位置的行号(即“当前行”) 1}}:
SelectionStart
设置光标在var currentLine = textBox1.GetLineFromCharIndex(textBox1.SelectionStart);
的给定行中是否有“干净/原生”的方式(即设置“当前行”)?或者至少是一种“干净/原生”的方式来获取给定行的第一个字符的char索引(类似于Textbox
,与我之前放置的函数相反)?
执行此操作的方法包括迭代getCharIndexFromLine
的{{1}}属性的第一个N-1
元素,并将它们的长度加上换行符的长度相加。还有其他想法吗?
答案 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;
段。