簡體   English   中英

如何從RichTextBox中的鼠標單擊點獲得插入位置?

[英]How to get the Caret Position from mouse clicking point in a RichTextBox?

我需要將RichTextBox文本的插入符號位置更改為鼠標單擊位置。 我使用內置方法GetPositionFromPointWPF RichTextBox了此GetPositionFromPoint
但是我在WinForms RichTextBox找不到任何這樣的方法。

誰能讓我知道,是否有任何使其可以在Windows窗體中使用的可能性?

單擊RichTextBox控件的Text內容時,插入標記的位置將移動到控件內部的鼠標指針的位置。 現在,此位置是當前插入點。
插入符號的新位置可以通過兩種方式檢索:

檢查SelectionStart屬性:

int CaretPosition = richTextBox1.SelectionStart;

使用MouseEventArgs e.Location返回的鼠標指針位置。
在這種情況下,可以使用GetCharIndexFromPosition方法:

int CaretPosition = richTextBox1.GetCharIndexFromPosition(e.Location);

如果您比較SelectionStart返回的值GetCharIndexFromPosition ,則可以驗證這些值是否相等。

如果要讓插入符號在RichTextBox的邊界內移動時跟隨鼠標指針,則可以訂閱MouseMove事件,並使用此方法將鼠標指針位置轉換為char索引位置(您需要先在內部單擊RichTextBox控件):

private void richTextBox1_MouseMove(object sender, MouseEventArgs e)
{
    RichTextBox rtb = sender as RichTextBox;
    rtb.SelectionStart = rtb.GetCharIndexFromPosition(e.Location);
}

Line的位置由GetLineFromCharIndex方法返回:
Lines []數組是指RichTextBox由換行符( \\n )分隔的文本部分)

int CaretPositionLine = richTextBox1.GetLineFromCharIndex(CaretPosition);

暫無
暫無

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

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