C#获取RichTextBox中的光标行
本文关键字:光标 获取 RichTextBox | 更新日期: 2023-09-27 18:25:25
在C#中,我有一个RichTextBox,我想获取光标的当前行。我找到的每个答案都说要使用:
int currentLine = richTextBox1.GetLineFromCharIndex(richTextBox1.SelectionStart);
但是,richTextBox1.SelectionStart仅在您更改文本时更新。如果用箭头键移动光标,它不会更新(我已经通过在移动时打印SelectionStart来验证这一点)。
如何获取光标的当前行,即使使用箭头键移动光标也能跟踪它?
我在Win8中使用VS2012。
编辑:terrybozzio的回答说明了问题所在。对于其他有此问题的人,您不能将代码放在richTextBox1_TextChanged中。您需要将其放入richTextBox1_SelectionChanged中。
首先需要获取selectionstart,如果没有对于任何选定的文本,返回的值都是插入符号的位置(从文本开始以字符为单位偏移),然后调用getlinefromcharindex并传递该值,将其放置在selectionchanged事件中,即使箭头键移动插入符号位置,它也会更新:
private void richTextBox1_SelectionChanged(object sender, EventArgs e)
{
int index = richTextBox1.SelectionStart;
int line = richTextBox1.GetLineFromCharIndex(index);
label1.Text = "cursor at line " + line.ToString();
}