将光标/插入符号发送到RichTextBox中的下一段

问题描述

我一直在尝试将RichTextBox中的插入标记移动到另一个段落,就像在键盘上按Ctrl + Down箭头一样。我使用SendKeys.Send("^{DOWN}"),但不一致,有时似乎按了两次,即跳过了几行。但是,当直接从键盘上按下它时,可以平稳移动而不会跳动。

如何使SendKeys稳定,或者还有其他解决方法

解决方法

您可以使用:

Dim nextParagraphPos = RichTextBox1.Text.IndexOf(vbLf,RichTextBox1.SelectionStart) + 1
If nextParagraphPos > 0 Then
    RichTextBox1.SelectionStart = nextParagraphPos
Else
    RichTextBox1.SelectionStart = RichTextBox1.TextLength
End If

这使用IndexOf()来获取下一个Line-Feed字符的位置,从而显示下一个段落的位置。如果IndexOf()返回-1,我们将位置设置在字符串的末尾以模拟 Ctrl + 的行为。

您也可以将If语句替换为以下简短版本:

RichTextBox1.SelectionStart = 
    If(nextParagraphPos > 0,nextParagraphPos,RichTextBox1.TextLength)