Hi,
ich bin gerade dabei, einen Syntaxhighlighter zu basteln. Er hebt mir auch alles gewünschte hervor.
Doch nur auf Knopfdruck. Nun soll aber während des Adrbeitens das gerade geschreibene Wort überprüft und bearbeitet werden. Die Funktion von Anfang bis ende durchlaufen zu lasse ist zu langsam. Nun dachte ich mir, dass ich einfach nach einem Keypress die aktuelle Cursorposition raussuche und dann 10 Stellen davor anfange zu suchen und 10 Stellen danach aufhöre.
Doch das ist genau so langsam wie wenn ich alles machen würde, außerdem verschwindet dabei fast immer auch anderer Text...
Wie kann ich das machen?
Gruß
dNIL
ich bin gerade dabei, einen Syntaxhighlighter zu basteln. Er hebt mir auch alles gewünschte hervor.
Code:
//Schlüsselworte:
enum HighlightWorte {alter,end,begin,where,Else,create,delete,update,Set,If,insert,into,then,Is,Null,exit,or,and,xor,select,values,declare,variable};
//Prozedur dazu:
private void syntaxhighlighter(int anfangZeichen, int endZeichen)
{
Type HighlightListe = typeof(HighlightWorte);
Font schrift = new Font("Courier New", 10, FontStyle.Bold);
foreach (string s in Enum.GetNames(HighlightListe))
{
int anfang = anfangZeichen-1;
int ende = endZeichen;
while (anfang>=0)
{
anfang = richTextBox1.Find(s,anfang+1,RichTextBoxFinds.WholeWord);
richTextBox1.SelectionColor = Color.Blue;
richTextBox1.SelectionFont = schrift;
}
}
}
Doch nur auf Knopfdruck. Nun soll aber während des Adrbeitens das gerade geschreibene Wort überprüft und bearbeitet werden. Die Funktion von Anfang bis ende durchlaufen zu lasse ist zu langsam. Nun dachte ich mir, dass ich einfach nach einem Keypress die aktuelle Cursorposition raussuche und dann 10 Stellen davor anfange zu suchen und 10 Stellen danach aufhöre.
Code:
private void richTextBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
int aktuellepos = richTextBox1.SelectionStart;
syntaxhighlighter(aktuellepos-10,aktuellepos+10);
richTextBox1.SelectionStart = aktuellepos;
}
Doch das ist genau so langsam wie wenn ich alles machen würde, außerdem verschwindet dabei fast immer auch anderer Text...
Wie kann ich das machen?
Gruß
dNIL
Zuletzt bearbeitet: