Pokud máte jistotu XML validity vstupu, použijte XML parser. Já bych se jinak přiklonil k RegExům, ale to je celkem jedno. Jestli Vám to funguje, tak je to OK. Já psal colorizer pro zdroje ve VB .NET, taky vycházel z RichTextBox. Blikání jsem vyřešil tak, že na začátku metody, která barvení provádí jsem uzamkl formulář, a po dokončení jej zase odemkl (Enabled). Postačí jistě ale i uzamčení čistě toho ovládacího prvku. A když se exekuce té metody protáhne na dobu delší, než je stisknutí další klapky nad RTB, zprávy pro rtb se akorát přidají do message loop, takže vám písmenka naskáčou vesele po dobarvení. Ideální to samozřejmě není, ale je to snažší, než psát vlastní komponentu. Pokud byste se ale rozhodl pro to, postupoval bych úplně jinak. Renderovací logiku bych rozdělil do několika částí. V jedné proměnné bych držel obravený zdroj a ten zfleku vykresloval, neobarvené kusy bych renderoval defaultní barvou a zároveň je asynchroně parsoval a poté připlácl k proměné s obraveným zdrojem. Výsledek by byl takový, že byste psal, a co by se nestíhalo obarvit by vám skákalo černě, a navíc se během psaní ještě dobarvovalo. Dále by bylo dobré obarvovat jen potřebné části textu a ne vše při každém stisku klapky, nebo vložení (vyjmutí atp.) textu. To je ale záležitost dost složitá (aspoň pro mě). Přeji mnoho zdaru
|