Autor Beitrag
lapadula
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 180
Erhaltene Danke: 10



BeitragVerfasst: Fr 24.02.17 14:50 
Hallo,

ich möchte gerne einen String, in einer RichTextBox, ab einem Hashtag blau färben.

Bsp.: Dies ist ein Text #test noch ein Text.

#test <- soll nun blau sein.

Das habe ich bereits so versucht:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
private void richTextBoxBeschreibung_TextChanged(object sender, EventArgs e)
        {
            for (int i = 0; i < richTextBoxBeschreibung.Lines.Length; i++)
            {
                if (richTextBoxBeschreibung.Text.Contains("#"))
                {
                    string text = richTextBoxBeschreibung.Lines[i];
                    richTextBoxBeschreibung.Select(richTextBoxBeschreibung.Text.IndexOf("#"), 6);
                    richTextBoxBeschreibung.SelectionColor = colorTicketNr(text);
                }
            }
        }
        private Color colorTicketNr(string line)
        {
            if(line.Contains("#")) return Color.Blue;

            return Color.Black;
        }


Das Problem ist, dass wenn ich in die Textbox nun etwas eingeben will, er immer zu dem blau-markierten Text springt. Es liegt wohl an diesem select.
Gibt es da noch eine andere Möglichkeit?
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 24.02.17 15:21 
- Nachträglich durch die Entwickler-Ecke gelöscht -

Für diesen Beitrag haben gedankt: lapadula
lapadula Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 180
Erhaltene Danke: 10



BeitragVerfasst: Fr 24.02.17 16:16 
Ah, vielen Dank.

hab den Code frecherweise mal so übernommen und es funktioniert nun wie es soll :)

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
Regex regexTicketNr = new Regex(@"(?<=#)\w+");
        private void richTextBoxBeschreibung_TextChanged(object sender, EventArgs e)
        {
            // Selektion merken
            int selPos = richTextBoxBeschreibung.SelectionStart;
            int selLength = richTextBoxBeschreibung.SelectionLength;

            // Highlighting reseten
            richTextBoxBeschreibung.SelectAll();
            richTextBoxBeschreibung.SelectionColor = Color.Black;

            // neues Highligthing setzen 
            foreach (Match m in regexTicketNr.Matches(this.richTextBoxBeschreibung.Text))
            {
                richTextBoxBeschreibung.Select(m.Index, m.Length);
                richTextBoxBeschreibung.SelectionColor = Color.Blue;
            }

            // alte Selektion wieder herstellen
            richTextBoxBeschreibung.SelectionStart = selPos;
            richTextBoxBeschreibung.SelectionLength = selLength;
        }