我有一个具有 RichTextBox 控件的 C# Windows 窗体程序。每当框内的文本发生更改时(除了键入该更改),光标就会回到开头。
换句话说,当使用 Text 属性更改 RichTextBox 中的文本时,会使光标向后跳。
如何将光标保持在同一位置或将其与编辑的文本一起移动?
谢谢
我有一个具有 RichTextBox 控件的 C# Windows 窗体程序。每当框内的文本发生更改时(除了键入该更改),光标就会回到开头。
换句话说,当使用 Text 属性更改 RichTextBox 中的文本时,会使光标向后跳。
如何将光标保持在同一位置或将其与编辑的文本一起移动?
谢谢
您可以在进行更改之前存储光标位置,然后再将其恢复:
int i = richTextBox1.SelectionStart;
richTextBox1.Text += "foo";
richTextBox1.SelectionStart = i;
如果您不想删除突出显示,您可能还想对 SelectionLength 执行相同的操作。请注意,如果插入的文本在选择范围内,这可能会导致奇怪的行为。然后,您将需要扩展选择以包括插入文本的长度。
请注意,如果有人刷新或完全更改 RichTextBox 内容,则必须事先调用 focus 方法才能移动插入符号:
richTextBox1.Focus();
int i = richTextBox1.SelectionStart;
richTextBox1.Text = strPreviousBuffer;
richTextBox1.SelectionStart = i;
这是一个较小的,具有相同的效果。this.richTextBox1.Select(this.richTextBox1.Text.Length, 0);
在文本末尾标记 0 个字符并将光标设置为结束