2012-10-05 15 views
8

Wie kann ich das tun, wenn ich etwas Text anfügen wird die RTB automatisch nach unten scrollen?Autoscrolling in RichTextBox C# WinForms

Jetzt benutze ich:

conversationRtb.Rtf = tab.conversationRtb.Rtf; 
conversationRtb.SelectionStart = conversationRtb.Text.Length; 
conversationRtb.ScrollToCaret(); 

Aber es ist nicht gut funktioniert. Manchmal scrollt es nicht bis zum Ende, sondern eine Zeile vor dem Ende.

rtb scroll down bug

Manchmal macht es einen großen Offset.

rtb scroll down bug

Ich finde nicht, warum. Gibt es einen anderen Weg, um nach unten zu scrollen? Ich habe AutoScrollOffset aber keine Beispiele gefunden, wie es funktioniert.

+3

Diese beiden Beiträge könnten helfen. Sie verwenden 'User32.dll', um stattdessen zu scrollen. http://stackoverflow.com/questions/8535102/inconsistens-results-with-richttextbox-scrolltocaret http://www.dutton.me.uk/2011/08/31/richttextbox-scrolltocaret-bug/ – keyboardP

+0

Ich würde lieber Verwenden Sie nicht benutzer32.dll. Ich verwende Mono und habe Probleme mit externen Bibliotheken. – sczdavos

+0

Ok. Ich habe nur Bedingung hinzugefügt. Wenn Windows @keyboardP-Lösung sonst standardmäßig ScrollToCaret verwenden. Scheint gut zu funktionieren. – sczdavos

Antwort

7

Sie können HideSelection value to false anpassen, der AppendText löst den korrekten Bildlauf aus.

+0

Ich habe versucht, aber nicht für mich arbeiten :( – sczdavos

+0

Sie sind auf winforms ??? oder wpf (ScrollToEnd) –

+0

Ohh sorry, ja ich benutze Winforms. Ich habe die Tags aktualisiert. – sczdavos