[英]How to get the Caret Position from mouse clicking point in a RichTextBox?
我需要將RichTextBox
文本的插入符號位置更改為鼠標單擊位置。 我使用內置方法GetPositionFromPoint
在WPF
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.