我需要将RichTextBox文本的插入符号位置更改为鼠标点击位置。我在WPFRichTextBox中使用内置的方法GetPositionFromPoint。但是我在WinFormsRichTextBox中找不到这样的方法。有人能让我知道,有没有可能使它在Windows窗体中工作?
RichTextBox
WPF
GetPositionFromPoint
WinForms
fcg9iug31#
单击RichTextBox控件的文本内容时,插入符号位置将移动到控件内鼠标指针的位置。此位置现在是当前插入点。插入符号新位置可以通过两种方式检索:检查SelectionStart属性:
int caretPosition = richTextBox1.SelectionStart;
使用MouseEventArgs ' e.Location返回的鼠标指针位置。在这种情况下,可以使用GetCharIndexFromPosition方法:
MouseEventArgs
e.Location
int caretPosition = richTextBox1.GetCharIndexFromPosition(e.Location);
如果比较SelectionStart和GetCharIndexFromPosition返回的值,可以验证这些值是否相等。如果您希望插入符号在RichTextBox的边界内移动时跟随鼠标指针,则可以订阅MouseMove事件并使用此方法将鼠标指针位置转换为字符索引位置(您需要首先在RichTextBox控件内单击):
SelectionStart
GetCharIndexFromPosition
MouseMove
private void richTextBox1_MouseMove(object sender, MouseEventArgs e) { RichTextBox rtb = sender as RichTextBox; rtb.SelectionStart = rtb.GetCharIndexFromPosition(e.Location); }
Line位置由GetLineFromCharIndex方法返回:(The Lines数组指的是换行分隔的文本部分(\n在RichTextBox中)
\n
int CaretPositionLine = richTextBox1.GetLineFromCharIndex(caretPosition);
1条答案
按热度按时间fcg9iug31#
单击
RichTextBox
控件的文本内容时,插入符号位置将移动到控件内鼠标指针的位置。此位置现在是当前插入点。插入符号新位置可以通过两种方式检索:
检查SelectionStart属性:
使用
MouseEventArgs
'e.Location
返回的鼠标指针位置。在这种情况下,可以使用GetCharIndexFromPosition方法:
如果比较
SelectionStart
和GetCharIndexFromPosition
返回的值,可以验证这些值是否相等。如果您希望插入符号在
RichTextBox
的边界内移动时跟随鼠标指针,则可以订阅MouseMove
事件并使用此方法将鼠标指针位置转换为字符索引位置(您需要首先在RichTextBox
控件内单击):Line位置由GetLineFromCharIndex方法返回:
(The Lines数组指的是换行分隔的文本部分(
\n
在RichTextBox
中)