如何从 RichTextBox 中的鼠标单击点获取插入符位置?
How to get the Caret Position from mouse clicking point in a RichTextBox?
我需要将 RichTextBox
文本的插入符号位置更改为鼠标单击位置。我使用内置方法 GetPositionFromPoint
.
在 WPF
RichTextBox
中完成了它
但是我在 WinForms
RichTextBox
.
中找不到任何类似的方法
任何人都可以告诉我,有没有可能让它在 Windows 表格中工作?
单击 RichTextBox
控件的文本内容时,插入符号位置会移动到控件内鼠标指针的位置。此位置现在是当前插入点。
可以通过两种方式检索插入符号的新位置:
检查 SelectionStart 属性:
int CaretPosition = richTextBox1.SelectionStart;
使用 MouseEventArgs
e.Location
.
返回的鼠标指针位置
在这种情况下,您可以使用 GetCharIndexFromPosition 方法:
int CaretPosition = richTextBox1.GetCharIndexFromPosition(e.Location);
如果比较 SelectionStart
和 GetCharIndexFromPosition
返回的值,您可以验证这些值是否相等。
如果您希望插入符号在 RichTextBox
的边界内移动时跟随鼠标指针,您可以订阅 MouseMove
事件并使用此方法平移鼠标指针定位到字符索引位置(您需要先在 RichTextBox
控件内单击):
private void richTextBox1_MouseMove(object sender, MouseEventArgs e)
{
RichTextBox rtb = sender as RichTextBox;
rtb.SelectionStart = rtb.GetCharIndexFromPosition(e.Location);
}
行位置由GetLineFromCharIndex方法返回:
(Lines数组指的是用换行符分隔的文本部分(\n
in a RichTextBox
)
int CaretPositionLine = richTextBox1.GetLineFromCharIndex(CaretPosition);
我需要将 RichTextBox
文本的插入符号位置更改为鼠标单击位置。我使用内置方法 GetPositionFromPoint
.
在 WPF
RichTextBox
中完成了它
但是我在 WinForms
RichTextBox
.
任何人都可以告诉我,有没有可能让它在 Windows 表格中工作?
单击 RichTextBox
控件的文本内容时,插入符号位置会移动到控件内鼠标指针的位置。此位置现在是当前插入点。
可以通过两种方式检索插入符号的新位置:
检查 SelectionStart 属性:
int CaretPosition = richTextBox1.SelectionStart;
使用 MouseEventArgs
e.Location
.
返回的鼠标指针位置
在这种情况下,您可以使用 GetCharIndexFromPosition 方法:
int CaretPosition = richTextBox1.GetCharIndexFromPosition(e.Location);
如果比较 SelectionStart
和 GetCharIndexFromPosition
返回的值,您可以验证这些值是否相等。
如果您希望插入符号在 RichTextBox
的边界内移动时跟随鼠标指针,您可以订阅 MouseMove
事件并使用此方法平移鼠标指针定位到字符索引位置(您需要先在 RichTextBox
控件内单击):
private void richTextBox1_MouseMove(object sender, MouseEventArgs e)
{
RichTextBox rtb = sender as RichTextBox;
rtb.SelectionStart = rtb.GetCharIndexFromPosition(e.Location);
}
行位置由GetLineFromCharIndex方法返回:
(Lines数组指的是用换行符分隔的文本部分(\n
in a RichTextBox
)
int CaretPositionLine = richTextBox1.GetLineFromCharIndex(CaretPosition);