Avatar billede larskhansen Nybegynder
17. juli 2005 - 18:28 Der er 8 kommentarer og
1 løsning

Gennemsøg txt fil

Hejsa.

Jeg har en rich textbox i min win app. Desuden har jeg en txt fil med 4129 forskellige php funktioner.

Når en bruger skriver en af disse funktioner i min textbox felt skal denne farves f.eks. grøn.

Men hvordan hulen gør man det? Har prøvet mig frem med selectionstart etc... uden held :o(

Håber at I kan hjælpe mig.
Avatar billede nielle Nybegynder
18. juli 2005 - 20:13 #1
using System.Text.RegularExpressions;

- og så noget i denne stil:

private void richTextBox1_TextChanged(object sender, System.EventArgs e)
{
    string[] GreenWords = {"grøn", "php", "Eksperten"};

    int OldSelectionStart = this.richTextBox1.SelectionStart;

    this.richTextBox1.SelectionStart = 0;
    this.richTextBox1.SelectionLength = this.richTextBox1.Text.Length;
    this.richTextBox1.SelectionColor = Color.Black;

    foreach (string GreenWord in GreenWords)
    {
        string Pattern = string.Format(@"\b{0}\b", GreenWord);
        Regex RE = new Regex(Pattern, RegexOptions.IgnoreCase);
        Match REM = RE.Match(this.richTextBox1.Text);

        int GreenWordLength = GreenWord.Length;

        while (REM.Success)
        {
            int Pos = REM.Index;

            this.richTextBox1.SelectionStart = Pos;
            this.richTextBox1.SelectionLength = GreenWordLength;
            this.richTextBox1.SelectionColor = Color.Green;

            REM = REM.NextMatch();
        }
    }   

    this.richTextBox1.SelectionStart = OldSelectionStart;
    this.richTextBox1.SelectionLength = 0;
    this.richTextBox1.SelectionColor = Color.Black;
}
Avatar billede larskhansen Nybegynder
19. juli 2005 - 08:36 #2
Nille - læg et svar så skal jeg give dig nogle point :o)
Avatar billede nielle Nybegynder
19. juli 2005 - 11:43 #3
Svar :^)
Avatar billede larskhansen Nybegynder
19. juli 2005 - 13:19 #4
Tak for det :o)
Avatar billede larskhansen Nybegynder
19. juli 2005 - 13:27 #5
Dog må jeg indrømme at når jeg har 4127 "items" i min string[] bliver den altså liiiidt sløv... Kan man tjekke når brugeren har trykket på "mellemrum/space" istedet for?
Avatar billede nielle Nybegynder
19. juli 2005 - 17:30 #6
Jep, det kan f.eks. gørest sådan her:

private void richTextBox1_TextChanged(object sender, System.EventArgs e)
{
    if (keyCode == Keys.Space)
    {
        string[] GreenWords = {"grøn", "php", "Eksperten"};

        int OldSelectionStart = this.richTextBox1.SelectionStart;

        this.richTextBox1.SelectionStart = 0;
        this.richTextBox1.SelectionLength = this.richTextBox1.Text.Length;
        this.richTextBox1.SelectionColor = Color.Black;

        foreach (string GreenWord in GreenWords)
        {
            string Pattern = string.Format(@"\b{0}\b", GreenWord);
            Regex RE = new Regex(Pattern, RegexOptions.IgnoreCase);
            Match REM = RE.Match(this.richTextBox1.Text);

            int GreenWordLength = GreenWord.Length;

            while (REM.Success)
            {
                int Pos = REM.Index;

                this.richTextBox1.SelectionStart = Pos;
                this.richTextBox1.SelectionLength = GreenWordLength;
                this.richTextBox1.SelectionColor = Color.Green;

                REM = REM.NextMatch();
            }
        }   

        this.richTextBox1.SelectionStart = OldSelectionStart;
        this.richTextBox1.SelectionLength = 0;
        this.richTextBox1.SelectionColor = Color.Black;
    }
}

private Keys keyCode;
private void richTextBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
    keyCode = e.KeyCode;
}
Avatar billede larskhansen Nybegynder
20. juli 2005 - 15:12 #7
Den virker ikke :o(
Avatar billede nielle Nybegynder
20. juli 2005 - 17:17 #8
Du skal tilføje funktionen richTextBox1_KeyDown som en KeyDown event på din richTextBox1.
Avatar billede larskhansen Nybegynder
20. juli 2005 - 20:52 #9
Ups :oD

Onsdagstræthed... ;o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester