繁体   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