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