[英]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.