2016-03-20 8 views
2

Ich muss einen großen (> 8000 Zeilen) RTF-formatierten Text in meinem Winforms RichTextBox anzeigen. Aber während Texte bis zu ~ 500 Zeilen sofort in der RichTextBox erscheinen, dauert ein großer Text wie dieser ein paar Minuten.Load RTF in Winforms Richtextbox "in Stufen"

So dachte ich, gibt es eine Möglichkeit, den Richtext in kleineren Teilen in die RichTextBox laden, d. H. Nur wenn der Benutzer weiter scrollt?

Leider der offensichtlichste Kandidat, die Methode appendtext() funktioniert nur für Nur-Text, nicht Rich-Text. Der Wechsel zu WPF ist zur Zeit leider nicht möglich.

Danke!

+1

Versuchen Sie zuerst, das RTB zu verstecken, laden Sie es und zeigen Sie es dann. Dies hilft im Allgemeinen, die Leistung zu verbessern. Es wird nicht im "Live" -Modus wiedergegeben, wenn das Steuerelement angezeigt wird. –

+1

Danke, aber das mache ich schon. Es hilft leider nicht viel Leistung. – Rob

+0

versuchen Sie, die Daten in Gruppen von 50 Zeilen zu trennen, dann fügen Sie Ereignishandler für Keydown hinzu, um weitere 50 hinzuzufügen: https://msdn.microsoft.com/en-us/library/ms745817(v=vs.85) .aspx – Avshalom

Antwort

1

Endlich gefunden: man muss am Ende des RTF eine Auswahl in der Richtextbox machen und den nächsten Teil wie folgt einfügen: $RichTextBox1.SelectedRtf = $rtf. Laden der RTF in Portionen von etwa 600 Zeilen, ist dies viel schneller (etwa 10x) als Laden der gesamten RTF auf einmal. Immer noch viel, viel langsamer als das Laden von einfachem Text derselben Größe.