13

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

换句话说,当使用 Text 属性更改 RichTextBox 中的文本时,会使光标向后跳。

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

谢谢

4

3 回答 3

18

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

int i = richTextBox1.SelectionStart;
richTextBox1.Text += "foo";
richTextBox1.SelectionStart = i;

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

于 2010-02-11T02:45:11.920 回答
4

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

richTextBox1.Focus();
int i = richTextBox1.SelectionStart;
richTextBox1.Text = strPreviousBuffer;
richTextBox1.SelectionStart = i;
于 2011-06-23T16:31:27.643 回答
3

这是一个较小的,具有相同的效果。this.richTextBox1.Select(this.richTextBox1.Text.Length, 0); 在文本末尾标记 0 个字符并将光标设置为结束

于 2016-05-17T14:16:38.387 回答