簡體   English   中英

C#在RichTextBox中獲取光標行

[英]C# Get cursor line in RichTextBox

在C#中,我有一個RichTextBox,我想獲取光標的當前行。 我找到的每個答案都說要使用:

int currentLine = richTextBox1.GetLineFromCharIndex(richTextBox1.SelectionStart);

但是,richTextBox1.SelectionStart僅在更改文本時更新。 如果使用箭頭鍵移動光標,則光標不會更新(我在移動時通過打印SelectionStart對此進行了驗證)。

即使您使用箭頭鍵來移動光標,如何以一種跟蹤它的方式獲取光標的當前行呢?

我在Win8中使用VS2012。

編輯: terrybozzio的答案顯示了問題。 對於其他遇到此問題的人,您不能將代碼放在richTextBox1_TextChanged中。 您需要將其放在richTextBox1_SelectionChanged中。

首先,您需要開始選擇,如果沒有任何選定的文本,則返回的值是插入符號的位置(從文本開始到字符的偏移量),然后調用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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM