Textbox ruckelt beim scrollen



  • Hallo,
    habe eine Programm mit dem ich aus einer Datei (mit 15k Zeilen) einen Bildschirm voll auslese (in meinem Fall ca. 70 Zeilen)
    Bei jedem Scrollen mit dem Mausrad wird der Bildlauf um 3 Zeilen in die Jeweilige Richtung verrückt und der Text wird neue gelesen und in die Richtextbox geschrieben, der alte Text wird gelöscht,
    die Richtextbox hat immer nur so viele Zeilen dass der sichtbare bereich gefüllt ist.

    zu meinem Problem:

    die Textbox flickert ohne Ende wenn ich nicht während des füllens "richtextbox->Visible = false" setze (gefüllt wird mit append text, zeilenweise)
    wenn ich das tue, kommt es jedoch zu einer kurzen verzögerung bis tatsächlich gescrollt wird

    weiteres Problem:

    ich möchte teile des Textes in der Textbox färben, keine ganzen Zeilen, nur z.b. die Uhrzeit (immer die ersten 8 zeichen)
    wenn ich dazu den string zerlege die Farbe setze und die Teilstrings einzeln ausgebe ist zwar alles schön farbig aber das braucht noch mehr zeit, wie ist das anders möglich?

    Bsp:

    String^ lineende = (output->Substring(multiplikator +LENGTHLINECOUNTER +MSGHEADER +MSGTIME)); 
    int lineendeindex = lineende->IndexOf("\n")+1;
    
    richtextboxtextfeld->SelectionBackColor = BackColor.Thistle;
    String^ stringa = output->Substring(multiplikator, LENGTHLINECOUNTER);
    richtextboxtextfeld->AppendText(stringa);
    
    richtextboxtextfeld->SelectionBackColor = BackColor.White;
    String^ stringb = output->Substring(multiplikator +LENGTHLINECOUNTER, MSGHEADER);
    richtextboxtextfeld->AppendText(stringb);
    
    richtextboxtextfeld->SelectionBackColor = BackColor.Gainsboro;
    String^ stringc = output->Substring(multiplikator +LENGTHLINECOUNTER +MSGHEADER, MSGTIME);
    richtextboxtextfeld->AppendText(stringc);
    
    richtextboxtextfeld->SelectionBackColor = BackColor.White;
    String^ stringd = output->Substring(multiplikator +LENGTHLINECOUNTER +MSGHEADER +MSGTIME, lineendeindex);
    richtextboxtextfeld->AppendText(stringd);
    
    String^ endstring = String::Concat(stringa, stringb, stringc, stringd);
    
    multiplikator = multiplikator +LENGTHLINECOUNTER +MSGHEADER +MSGTIME + lineendeindex; //Multiplikator ist ein Lesezeichen wie weit ich beim vorherigen Durchgang gelesen habe.
    

    hoffe ich hier im bereich CLI richtig, MfG Florian



  • okay, hat sich erledigt, lösung hier: http://www.c-plusplus.net/forum/p2277804#2277804


Anmelden zum Antworten