Ich versuche, Teile einer Zeichenfolge einzufärben, die an eine RichTextBox angehängt werden sollen. Ich habe eine Saite aus verschiedenen Saiten aufgebaut.
string temp = "[" + DateTime.Now.ToShortTimeString() + "] " +
userid + " " + message + Environment.NewLine;
So würde die Nachricht aussehen, wenn sie einmal erstellt wurde.
[9:23 pm] Benutzer: meine Nachricht hier.
Ich möchte, dass alles in und einschließlich der Klammern [9:23] eine Farbe hat, "Benutzer" eine andere Farbe und die Nachricht eine andere Farbe. Dann möchte ich, dass die Zeichenfolge an meine RichTextBox angehängt wird.
Wie kann ich das erreichen?
Antworten:
Hier ist eine Erweiterungsmethode, die die
AppendText
Methode mit einem Farbparameter überlädt:Und so würden Sie es verwenden:
Beachten Sie, dass Sie möglicherweise ein Flackern bemerken, wenn Sie viele Nachrichten ausgeben. In diesem C # Corner- Artikel finden Sie Ideen zum Reduzieren des RichTextBox-Flimmerns.
quelle
box.Text += mystring
und so verschwanden alle Farben. Als ich dies durch ersetztebox.AppendText(mystring)
, funktionierte es wie ein Charme.AppendText(string text)
mit WinFormsIch habe die Methode mit der Schriftart als Parameter erweitert:
quelle
Dies ist die modifizierte Version, die ich in meinen Code eingefügt habe (ich verwende .Net 4.5), aber ich denke, sie sollte auch unter 4.0 funktionieren.
Unterschiede zum Original:
quelle
Ich denke, das Ändern eines "ausgewählten Textes" in einer RichTextBox ist nicht der richtige Weg, um farbigen Text hinzuzufügen. Also hier eine Methode, um einen "Farbblock" hinzuzufügen:
Von MSDN :
Ich denke, Sie müssen Ihre Zeichenfolge abhängig von der Farbe der Teile teilen und so viele
Run
Objekte wie nötig erstellen .quelle
Es funktioniert für mich! Ich hoffe es wird dir nützlich sein!
quelle
Wenn Sie Text wie von jemandem ausgewählt auswählen, wird die Auswahl möglicherweise vorübergehend angezeigt. Es
Windows Forms applications
gibt keine anderen Lösungen für das Problem, aber heute habe ich einen schlechten, funktionierenden Weg gefunden, um es zu lösen: Sie können einePictureBox
Überlappung mit dem setzenRichtextBox
mit dem Screenshot von if, während der Auswahl und der Änderung der Farbe oder Schriftart, um es danach zu machen erscheinen alle wieder, wenn der Vorgang abgeschlossen ist.Code ist da ...
Besser ist es, WPF zu verwenden; Diese Lösung ist nicht perfekt, aber für Winform funktioniert sie.
quelle
quelle
Bei Verwendung von Selection in WPF, aggregiert aus mehreren anderen Antworten, ist kein anderer Code erforderlich (außer Severity Enum und GetSeverityColor-Funktion).
quelle
Ich habe diese Funktion nach Recherchen im Internet erstellt, da ich eine XML-Zeichenfolge drucken wollte, wenn Sie eine Zeile aus einer Datenrasteransicht auswählen.
und so nennst du es
quelle