2010-02-11 91 views
8

我有一个具有RichTextBox控件的C#Windows窗体程序。只要盒子内的文本发生改变(除了输入该改变),光标就会回到开头。Windows窗体RichTextBox光标位置

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

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

感谢

回答

12

您可以将光标位置,在更改前,再后来恢复它:

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

您可能还希望做同样的SelectionLength如果你不想删除高光。请注意,如果插入的文本位于选区内,这可能会导致奇怪的行为。然后,您需要扩展选择以包含插入文本的长度。

richTextBox1.Focus(); 
int i = richTextBox1.SelectionStart; 
richTextBox1.Text = strPreviousBuffer; 
richTextBox1.SelectionStart = i; 
2

要小心,如果有人刷新或变更完全RichTextBox的内容,对焦方式,必须事先以移动插入符invoqued。 this.richTextBox1.Select(this.richTextBox1.Text.Length, 0); 在文本末尾标记0个字符并将光标设置为结束

0

这里有一个较小的一个,具有同样的效果: