2009-05-13 6 views
3

J'ai trouvé un tutoriel pour faire la coloration syntaxique dans RichEdits pour WPF:C# La coloration syntaxique dans WPF

http://blogs.microsoft.co.il/blogs/tamir/archive/2006/12/14/RichTextBox-syntax-highlighting.aspx

Mais si j'ouvre la liste des commandes à partir d'un fichier EditBox devient très lent ... peut-être y a-t-il trop de mots à mettre en évidence. J'ai lu que les éléments WPF comme RichEdit sont beaucoup plus lents que les éléments WinForms.

Comment rendre mon WPF RichEdit plus rapide OU inclure le Winforms RichEdit dans mon WPF?

Répondre

2

J'ai écrit une syntaxe similaire highlighter dans .NET 1.1, et la performance est horrible. Je n'ai pas revu la question depuis de nombreuses années, mais il me semble qu'il doit y avoir un meilleur moyen. Je crois que la réponse peut être RTF documentation. Vous pouvez définir une table de couleurs et/ou des styles, puis les utiliser pour envelopper les mots correspondants. Consultez la section «Propriétés de mise en forme des polices (caractères)», cf. N et cs N. L'astuce consiste alors à trouver les correspondances et à insérer les caractères de contrôle le plus rapidement possible. Je suis RegEx serait la méthode de balayage la plus rapide.

Vous pouvez également essayer de limiter la surbrillance à une zone raisonnable autour de l'espace visible, ou même envisager de placer l'action de surbrillance sur un autre processus.

Je serais certainement intéressé à trouver une bonne solution à ce problème.

Questions connexes