如何在RichTextBox控件中获取当前行?

时间:2010-04-22 19:53:49

标签: c# .net winforms richtextbox

假设我点击了RichTextBox控件中的某个位置。如何获得当前插入符号的当前行?

顺便说一下,这是检索该行的整个文本字符串。

5 个答案:

答案 0 :(得分:12)

这对我有用:

this.WordWrap = false;
int cursorPosition = this.SelectionStart;
int lineIndex = this.GetLineFromCharIndex(cursorPosition);
string lineText = this.Lines[lineIndex];
this.WordWrap = true;

答案 1 :(得分:11)

这就是RichTextBox.GetLineFromCharIndex()的作用。传递SelectionStart属性值。

答案 2 :(得分:1)

一种方法是发送EM_LINEFROMCHAR Message。我相信还有其他方法。

答案 3 :(得分:1)

我的回答比文森特的回答还要厉害,因为在获得正确的行号之后,我发现它闪烁得非常可怕。因此,我添加了一个内存丰富的文本框来完成该工作。

private int GetCharacterIndexOfSelection()
{
    var wordWrappedIndex = this.SelectionStart;

    RichTextBox scratch = new RichTextBox();
    scratch.Lines = this.Lines;
    scratch.SelectionStart = wordWrappedIndex;
    scratch.SelectionLength = 1;
    scratch.WordWrap = false;
    return scratch.SelectionStart;
}

private int GetLineNumberOfSelection()
{
    var selectionStartIndex = GetCharacterIndexOfSelection();

    RichTextBox scratch = new RichTextBox();
    scratch.Lines = this.Lines;
    scratch.SelectionStart = selectionStartIndex;
    scratch.SelectionLength = 1;
    scratch.WordWrap = false;
    return scratch.GetLineFromCharIndex(selectionStartIndex);
}

答案 4 :(得分:-1)

如果您想从现在正在调试的编辑器控件中获取当前行号,那么

int lineNumber = (new StackTrace()).GetFrame(1).GetFileLineNumber();

我认为这对你的问题有帮助。