Richtextbox et coloration syntaxique
Bonjour à tous,
Je suis entrain de travailler sur une petite application qui devrait gérer une coloration syntaxique (html et sql)
J'ai fait un bout de code qui fonctionne, mais n'es pas assez performant à mon goût, le richtextbox scintille comme un sapin de noël :alerte: quand je tape du code, et surtout quand je colle un code tout fait :
au debut je definie une classe Balise qui contient un Font, une Color et un string (regex pattern)
Code:
1 2 3 4 5 6 7 8 9 10
|
List<Balise> balises;
balises = new List<Balise>();
balises.Add(new Balise("a", Color.AliceBlue));
balises.Add(new Balise("b", Color.AntiqueWhite));
balises.Add(new Balise("c", Color.Aqua));
balises.Add(new Balise("d", Color.Aquamarine));
balises.Add(new Balise("e", Color.Azure));
balises.Add(new Balise("f", Color.Beige));
balises.Add(new Balise("g", Color.Bisque)); |
Puis je definit une fonction Colorize()
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
private void Colorize()
{
richTextBox1.SelectAll();
richTextBox1.SelectionColor = Color.Black;
string str = richTextBox1.Text;
foreach (Balise b in balises)
{
Regex reg = new Regex(b.regex, RegexOptions.Compiled|RegexOptions.CultureInvariant|RegexOptions.Singleline|RegexOptions.IgnoreCase);
MatchCollection matches = reg.Matches(str);
foreach (Match m in matches)
{
richTextBox1.Select(m.Index, m.Length);
richTextBox1.SelectionColor = b.color;
}
}
richTextBox1.Select(str.Length, 0);
} |
Est ce que quelqu'un aurait une idée pour avoir une méthode moins coûteuse svp ?
Merci d'avance
Titip