C# Windows窗体RichTextBox光标位置

C# Windows窗体RichTextBox光标位置,c#,winforms,cursor,richtextbox,C#,Winforms,Cursor,Richtextbox,我有一个C#Windows窗体程序,它有一个RichTextBox控件。每当框中的文本发生更改(而不是键入该更改)时,光标将返回到开头 换句话说,当使用text属性更改RichTextBox中的文本时,会使光标向后跳转 如何将光标保持在同一位置或与编辑的文本一起移动 谢谢您可以在进行更改之前存储光标位置,然后再恢复: int i = richTextBox1.SelectionStart; richTextBox1.Text += "foo"; richTextBox1.SelectionSta

我有一个C#Windows窗体程序,它有一个RichTextBox控件。每当框中的文本发生更改(而不是键入该更改)时,光标将返回到开头

换句话说,当使用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个字符并将光标设置为end

光标位置和选择开始并不总是相同的。如果选择了文本,则插入符号可以位于所选文本的开头或结尾,具体取决于所选文本的方向。遗憾的是,Winforms RichTextBox似乎对此没有单独的属性。