2010-02-11 26 views
8

Ich habe ein C# Windows Forms-Programm, das über ein RichTextBox-Steuerelement verfügt. Immer wenn der Text in der Box geändert wird (außer der Änderung), springt der Cursor an den Anfang zurück.Windows Forms RichTextBox Cursorposition

Mit anderen Worten, wenn der Text in der RichTextBox mithilfe der Eigenschaft Text geändert wird, springt der Cursor zurück.

Wie kann ich den Cursor in der gleichen Position halten oder mit dem bearbeiteten Text verschieben?

Dank

Antwort

12

Sie können die Cursor-Position speichern, bevor die Änderung vorgenommen, und es dann später wieder her:

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

Sie könnten auch das gleiche mit SelectionLength tun möchten, wenn Sie nicht wollen Entferne die Markierung. Beachten Sie, dass dies zu merkwürdigem Verhalten führen kann, wenn der eingefügte Text in der Auswahl enthalten ist. Dann müssen Sie die Auswahl um die Länge des eingefügten Textes erweitern.

2

Seien Sie vorsichtig, wenn jemand erfrischt oder Änderungen vollständig den RichTextBox Inhalt muss die Fokusmethode vorher um invoqued werden die Einfügemarke zu bewegen:

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

hier ist ein kleineres, welche die gleiche Wirkung hat. this.richTextBox1.Select(this.richTextBox1.Text.Length, 0); Das markiert 0 Zeichen am Ende des Textes und setzt den Cursor auf Ende