Bonjour,
J'ai développé un code de "colorisation de code PHP". Le code fonctionne à merveille, je suis partis sur un algo 'personnel' sans trop suivre ceux existant pour faire ce genre de script mais je suis content de moi. j'arrive a coloriser 35 000 caratères en 350Ms en moyenne.
Seulement j'ai un gros soucis.
Ma fonction permettant de colorier met 350Ms mais en ajoutant l'affichage et le raffraichissement de la richTextBox le temps passe à une ou deux secondes :s
Très désagréable lorsque l'on change le texte a colorier ( imaginer si Word réfléchissait deux secondes avant d'afficher le caratère que vous venez de saisir... )
En gros, ma fonction se présente sous cette forme:
l'appel de la fonction depuis le programme principal se fait de cette manière:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 ' rtb est un RichTextBox qui n'est pas affichée a l'écran, ' il me sert à creer le 'code' RTF. Dim rtb as new RichTextBox public function Colorier( ByRef code_source as string ) as String rtb.text= code_source ' on applique l'algo... 'et pour colorier un mot, je procéde de cette manière: with rtb .SelectionStart = x .SelectionLength = y .SelectionColor= color.blue end with ' a la toute fin de cette fonction, ' je renvoi le text en rtf: return rtb.rtf End Function
Soit 'RTBcode', la RichTextBox affichée a l'écran et qui accueil le code source php.
RTBcode.rtf=colorier(RTBcode.text)
Toute cette partie me prend en moyenne 350Ms.
Seulement a l'affichage, comme je le vous disait, la Richtextbox met une à deux secondes avant de se raffraichir.
Quelqu'un aurait une idée pour améliorer le raffraichissement ?
J'ai tenté en mettant :
Mais sa n'a pas vraiment réduit ce laps de temps.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 rtb.SuspendLayaout() '... rtb.ResumeLayaout()
Deuxième petite question:
Plutôt que d'utiliser:
Serais-ce plus rapide si, au lieu de procèder comme précédement, j'écrivait moi même le code RTF dans une chaine de caratère ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 with rtb .SelectionStart = x .SelectionLength = y .SelectionColor= color.blue end with
( remplacer le RichTextBox rtb en une chaine de caratère et écrire moi même le code RTF brut )
Désolé pour le post un peu long ^^
et merci
Partager