Toon posts:

[C#] probleem met syntax highligher

Pagina: 1
Acties:
  • 29 views sinds 30-01-2008

Verwijderd

Topicstarter
Jowz,

Ik ben bezig met een functie om code te highlighten.
Nu heb ik het volgende probleem, als ik de functie parseline() in de form_load geval zet en vantevoren al tekst in een RTB control zet (dus in vs2005 al bij properties en niet tijdens het debuggen) dan komt er 1 keer de code ge-highlight te staan en 1 keer gewoon.

Voer ik die functie ook nog eens uit in een timer dan blijft die ge-highlighte code komen. :P

Afbeeldingslocatie: http://www.mad-heaven.com/vageparser.gif


weet iemand een oplossing?
Hier wat code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
private void Form1_Load(object sender, EventArgs e)
        {
            Regex r = new Regex("\\n");
            String[] lines = r.Split(richTextBox1.Text);

            foreach (string l in lines)
            {
                ParseLine(l);
            }
        }

void ParseLine(string line)
        {
            Regex r = new Regex("([ \\t{}():;])");
            String[] tokens = r.Split(line);

            foreach (string token in tokens)
            {
                // Set the token’s default color and font.
                richTextBox1.SelectionColor = Color.Black;
                richTextBox1.SelectionFont = new Font("Courier New", 10, FontStyle.Regular);

                // Check whether the token is a keyword.
                String[] keywords = { "public", "void", "using", "static", "class" };

                for (int i = 0; i < keywords.Length; i++)
                {
                    if (keywords[i] == token)
                    {
                        // Apply alternative color and font to highlight keyword.
                        richTextBox1.SelectionColor = Color.Blue;
                        richTextBox1.SelectionFont = new Font("Courier New", 10, FontStyle.Bold);
                        break;
                    }
                }

                richTextBox1.SelectedText = token;
            }

            richTextBox1.SelectedText = "\n";
        }

  • whoami
  • Registratie: December 2000
  • Laatst online: 29-04 13:16
Ik snap niet wat je bedoeld, geef eens wat meer uitleg.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Nou, in visual studio 2005 heb ik een RTB control. In visual studio 2005 zet ik een stuk code in die RTB control. Vervolgens zet ik in de form_load dit:

code:
1
2
3
4
5
6
7
 Regex r = new Regex("\\n");
            String[] lines = r.Split(richTextBox1.Text);

            foreach (string l in lines)
            {
                ParseLine(l);
            }


zodat de code in die rtb control gehighlight word.
Het resultaat is te zien in de screenshot die ik gaf.

De code komt dus 2 keer in mijn RTB control te staan.

  • whoami
  • Registratie: December 2000
  • Laatst online: 29-04 13:16
Tja, daar is maar één antwoord op: debug je code en kijk waar het mis gaat.

Het is niet de bedoeling van P&W dat wij die code voor jou gaan debuggen. VS.NET biedt genoeg mogelijkheden (breakpoints, watches), om dat allemaal eerst eens zelf te gaan nalopen.

https://fgheysels.github.io/


Dit topic is gesloten.