2010-02-11 125 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

這裏有一個較小的一個,具有同樣的效果: