Hallo,
Nun möchte ich noch während das Programm ausgeführt und wenn ein Button gedrückt wird, bestimmte Wörter in der RichTextBox farbig markiert werden(d.h. nicht Selected).
Dazu habe ich folgenden Beispielcode gefunden, denn ich an meine Bedürfnisse anpassen will.
Code von de.softuses.com
In diesem Code wird Text in eine textBox geschrieben und das Dokument, welches in der richTextBox steht wird durchsucht wenn man den Button klickt. Beim klicken werden diese 2 Methoden aufgerufen, welche die richTextBox nach dem searchstring durchsucht und das Wort auswählt falls es gefunden wurde.
Ich habe mir nun 2 Wege ausgedacht.
1.: ich erstelle mir ein FlowDocument, kopiere den kompletten Text aus der richtextBox dort rein, suche dort nach dem Text, markiere diesen farbig z.B. rot und übergebe das FlowDocument an die richtextBox.
2.: ich suche nun nach dem Wort das ich markieren will, erstelle mir ein neues FlowDocument, lade meine gesuchtes Wort dort rein, markiere es farbig(z.b. roter hintergrund), lösche dann das Wort in der richtextbox und füg mein markiertes Wort an der selben Stelle wieder ein. Jetzt wär das Wort rot markiert bzw hinterlegt und ich wär glücklich
Welche würdet ihr für besser finden, bzw. würde sich mit Hilfe des Beispielcodes besser lösen lassen?
Und gibt es Beispiele dafür wie ich gezielt Text aus der RichTextBox lösche, bearbeite und wieder einfüge?
Mfg
Karl Reimann
Nun möchte ich noch während das Programm ausgeführt und wenn ein Button gedrückt wird, bestimmte Wörter in der RichTextBox farbig markiert werden(d.h. nicht Selected).
Dazu habe ich folgenden Beispielcode gefunden, denn ich an meine Bedürfnisse anpassen will.
Code von de.softuses.com
Code:
public bool DoSearch(RichTextBox richTextBox, string searchText, bool searchNext) { TextRange searchRange; // Get the range to search if (searchNext) searchRange = new TextRange(richTextBox.Selection.Start.GetPositionAtOffset(1), richTextBox.Document.ContentEnd); else searchRange = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd); // Do the search TextRange foundRange = FindTextInRange(searchRange, searchText); if (foundRange == null) return false; // Select the found range richTextBox.Selection.Select(foundRange.Start, foundRange.End); return true; } public TextRange FindTextInRange(TextRange searchRange, string searchText) { // Search the text with IndexOf int offset = searchRange.Text.IndexOf(searchText); if (offset < 0) return null; // Not found // Try to select the text as a contiguous range for (TextPointer start = searchRange.Start.GetPositionAtOffset(offset); start != searchRange.End; start = start.GetPositionAtOffset(1)) { TextRange result = new TextRange(start, start.GetPositionAtOffset(searchText.Length)); if (result.Text == searchText) return result; } return null; }
Ich habe mir nun 2 Wege ausgedacht.
1.: ich erstelle mir ein FlowDocument, kopiere den kompletten Text aus der richtextBox dort rein, suche dort nach dem Text, markiere diesen farbig z.B. rot und übergebe das FlowDocument an die richtextBox.
2.: ich suche nun nach dem Wort das ich markieren will, erstelle mir ein neues FlowDocument, lade meine gesuchtes Wort dort rein, markiere es farbig(z.b. roter hintergrund), lösche dann das Wort in der richtextbox und füg mein markiertes Wort an der selben Stelle wieder ein. Jetzt wär das Wort rot markiert bzw hinterlegt und ich wär glücklich
Welche würdet ihr für besser finden, bzw. würde sich mit Hilfe des Beispielcodes besser lösen lassen?
Und gibt es Beispiele dafür wie ich gezielt Text aus der RichTextBox lösche, bearbeite und wieder einfüge?
Mfg
Karl Reimann
Comment