Windows Forms RichTextBox游标位置

QAH*_*QAH 11 c# richtextbox cursor winforms

我有一个C#Windows窗体程序,它具有RichTextBox控件.每当更改框内的文本时(除了键入该更改),光标将返回到开头.

换句话说,当使用Text属性更改RichTextBox中的文本时,它会使光标跳回.

如何将光标保持在相同位置或将其与编辑后的文本一起移动?

谢谢

Mar*_*ers 14

您可以在进行更改之前存储光标位置,然后将其恢复:

int i = richTextBox1.SelectionStart;
richTextBox1.Text += "foo";
richTextBox1.SelectionStart = i;
Run Code Online (Sandbox Code Playgroud)

如果您不想删除突出显示,您可能还希望对SelectionLength执行相同操作.请注意,如果插入的文本在选择内,这可能会导致奇怪的行为.然后,您需要扩展选择以包括插入文本的长度.

  • 光标位置和 SelectionStart 并不总是相同。在选择文本的情况下,插入符号可以位于所选文本的开头或末尾,具体取决于选择文本的方向。遗憾的是,Winforms RichTextBox 似乎没有为此提供单独的属性。 (2认同)

GoR*_*RoS 5

请注意,如果有人刷新或完全更改了 RichTextBox 内容,则必须事先调用 focus 方法才能移动插入符号:

richTextBox1.Focus();
int i = richTextBox1.SelectionStart;
richTextBox1.Text = strPreviousBuffer;
richTextBox1.SelectionStart = i;
Run Code Online (Sandbox Code Playgroud)