Entwickler-Ecke
WinForms - RichTextBox Text färben
lapadula - Mi 03.08.16 20:39
Titel: RichTextBox Text färben
Hallo, ich habe ein Verständnisproblem beim folgenden Problem.
In einer RichTextBox werden die Zeilen, die je nachdem was bei der If-Abfrage rauskommt grün, rot oder schwarz gefärbt.
Eine Möglichkeit dafür wäre zB.
Moderiert von
Th69: s. unten
Gibt es dafür eine elegantere Lösung, bzw eine kompaktere?
Moderiert von
Christian S.: Topic aus C# - Die Sprache verschoben am Mi 03.08.2016 um 22:17
C# - Do 04.08.16 06:51
Bin ich der Einzige der keinen Beispielcode sieht oder hat ihn der TE einfach vergessen?
Palladin007 - Do 04.08.16 07:22
Ich würde eher darauf tippen, dass jemand was kaputt gemacht hat, hab gestern den Code nämlich noch gesehen :D
Vielleicht Christian? :roll:
Christian S. - Do 04.08.16 07:35
:gruebel: Ich hab eigentlich nur verschoben und zwei Tags eingefügt. :nixweiss:
Palladin007 - Do 04.08.16 07:39
Hat sich da ein Käfer versteckt? :P
Der Code war auf jeden Fall da, er hat die Selection von der RichTextBox geändert um dann für die aktuelle Auswahl die Farbe zu ändern.
Wann genau weiß ich aber auch nicht mehr, war glaube eher später.
Naja, dann muss wohl lapadula nach helfen ^^
lapadula - Fr 05.08.16 22:34
ups da hab ich wohl beim editieren was falsch gemacht :lol:
hier nochmal der Beispielcode
C#-Quelltext
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:
| private void highlightLineContaining(RichTextBox rtb, int line, string search, Color color) { int c0 = rtb.GetFirstCharIndexFromLine(line); int c1 = rtb.GetFirstCharIndexFromLine(line + 1); if (c1 < 0) c1 = rtb.Text.Length; rtb.SelectionStart = c0; rtb.SelectionLength = c1 - c0; if (rtb.SelectedText.Contains(search)) rtb.SelectionColor = color; rtb.SelectionLength = 0; }
private void DisplayScript() { this.Script.Clear(); for(int i = 0; i < this.Scripter.Script.Querys.Length; i++) { string sLine = i.ToString("00000") + " [" + this.Scripter.Script.Querys[i].iAffectedRows.ToString("000") + "] |" + this.Scripter.Script.Querys[i].sQuery + " --> " + this.Scripter.Script.Querys[i].sError + "\n"; this.Script.Text += sLine; if(this.Scripter.Script.Querys[i].bExecuted) this.highlightLineContaining(this.Script, i, sLine, Color.Green); else if (this.Scripter.Script.Querys[i].sError != string.Empty) this.highlightLineContaining(this.Script, i, sLine, Color.Red); else this.highlightLineContaining(this.Script, i, sLine, Color.Black); } } |
Hab das nun alles in die DisplayScript()-Methode gepackt und per if-Bedingung abgefragt, so klappt das und nun wird auch der Text gefärbt auch wenn es einen Zeilenumbruch gab, vorher hat er das nicht gemacht.
C#-Quelltext
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:
| private void DisplayScript() { this.rtbScript.Clear();
for(int i = 0; i < this.Scripter.Script.Querys.Length; i++) { sLine = this.Scripter.Script.Querys[i].sQuery + " " + Scripter.Script.Querys[i].sError + "\n";
if (this.Scripter.Script.Querys[i].bExecuted) {
int start = rtbScript.TextLength; rtbScript.AppendText(sLine); rtbScript.Select(start, sLine.Length); rtbScript.SelectionColor = Color.Green; } else if (this.Scripter.Script.Querys[i].sError != string.Empty) { int start = rtbScript.TextLength; rtbScript.AppendText(sLine); rtbScript.Select(start, sLine.Length);
rtbScript.SelectionColor = Color.Red;
} else { int start = rtbScript.TextLength; rtbScript.AppendText(sLine); rtbScript.Select(start, sLine.Length);
rtbScript.SelectionColor = Color.Black; } |
Delete - Fr 05.08.16 22:53
- Nachträglich durch die Entwickler-Ecke gelöscht -
lapadula - Di 16.08.16 15:48
Danke, so wäre es noch kompakter.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!