RichTextBox mit abwechselnden Hintergrundfarben pro Zeile befüllen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von oobdoo.

    RichTextBox mit abwechselnden Hintergrundfarben pro Zeile befüllen

    Ich will eine RichTextBox zügig mit Text befüllen. Dafür verwende ich einen StringBuilder, welcher die einzelnen Strings entgegen nimmt. StringBuilder.Append(MeineTexte + vbCrLf)
    Dieser StringBuilder wird dann an eine RichTextBox übergeben. RichtTextBox.AppendText(StringBuilder.ToString) Das funktioniert auch alles und ist schön schnell.


    Nun würde ich gerne jeder zweiten Zeile eine andere Hintergrundfarbe geben.

    VB.NET-Quellcode

    1. For ii = 0 To Anzahl - 1 Step 2
    2. Me.SelectionStart = Me.GetFirstCharIndexFromLine(ii)
    3. Me.SelectionLength = Me.Lines(ii).Length
    4. Me.SelectionBackColor = Color.LightGray
    5. Next


    Diese For-Next Schleife kommt nach dem RichtTextBox.AppendText(StringBuilder.ToString) zum Einsatz.
    Das ist mir aber viel zu langsam.

    Nun frage ich mich wie die Farbinformation in die RTB eingefügt wird.

    Am liebsten wäre mir ein StringBuilder.Append(FarbCode + MeineTexte + vbCrLf). Aber geht sowas überhaupt?
    Aktuelles Projekt: Z80 Disassembler für Schneider/Amstrad CPC :love:
    Wieviel Tonnen Text hast Du, dass das bei Dir so lange dauert?
    Probier mal vor der For-Schleife: Me.SuspendLayout und danach Me.ResumeLayout. Die Farbe kannst Du nicht in den StringBuilder einbauen. Aber Du könntest den RTF-Code selber modifizieren. Dürfte aber wohl ziemlich mühselig werden.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Wie @VaporiZed schon sagte, nutze die RTF-Property der RichtTextBox und bastel Dir selbst den RTF-Code zusammen. Sollte dann fast ohne Verzögerung gehen.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Nun, was Du machen kannst ist folgendes. Formatiere den Text so, wie Du ihn haben möchtest und sieh Dir dann an, was in der RFT-Property drinsteht. Das musst Du dann nachbauen. Sollte eigentlich nicht allzu schwierig sein. Gibt bestimmt auch Dokumentation dazu.

    Oder Du machst Dich auf die Suche nach einer alternative zur RichtTextBox... https://www.codeproject.com/Articles/161871/Fast-Colored-TextBox-for-syntax-highlighting-2

    Ist mir noch in Erinnerung.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Ich habe eine ganz andere Lösung dafür gefunden. Der Text in meiner RTB ändert sich nie.
    Es reicht aus wenn der Inhalt dieser RTB nur einmal bei der Programminstallation erzeugt wird.
    Danach kann ich bei jedem Programmstart das vorhandene RTF laden und Anzeigen.
    Das geht dann in der gewünschten Geschwindigkeit. :)

    Danke für eure Hinweise. Ich bin mir sicher das ich diese Tips noch später anderswo verwenden kann.
    Aktuelles Projekt: Z80 Disassembler für Schneider/Amstrad CPC :love: