2016-06-01 21 views
1

Ich habe eine RichTextBox in meiner Anwendung, die eine Textdatei, eine Protokolldatei genau liest, die so aussieht: http://pastebin.com/3ETeYSUH Und das geht weiter.Farbspezifische Zeilen in RichTextBox

Meine Frage ist, wie kann ich die volle Linie zu ROT, die sagt "Sikertelen csatlakozás"? (Ja, ungarische Sprache bedeutet es: "Can not connect")

Mein Code, der die Datei lautet:

string fileName = "servermanagerlog.txt"; 
      TextRange range; 
      FileStream fStream; 
      if (File.Exists(fileName)) 
      { 
       range = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd); 
       fStream = new FileStream(fileName, FileMode.OpenOrCreate); 
       range.Load(fStream, DataFormats.Text); 
       fStream.Close(); 
      } 
      richTextBox.ScrollToEnd(); 

Antwort

0

diesen Code Versuchen (I Text nur hinzugefügt manuell anstatt aus Datei) :

void richTextBox_Loaded(object sender, RoutedEventArgs e) 
    { 
     TextRange range = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd); 
     range.Text = "Here is one line with some text" + Environment.NewLine; 
     range.Text += "Here is another line Sikertelen csatlakozás with some text" + Environment.NewLine; 
     range.Text += "Here is another line with some text" + Environment.NewLine; 
     range.Text += "Here is another line Sikertelen csatlakozás with some text" + Environment.NewLine; 
     range.Text += "Here is one line with some text" + Environment.NewLine; 
     range.Text += "Here is another line Sikertelen csatlakozás with some text" + Environment.NewLine; 
     range.Text += "Here is another line with some text" + Environment.NewLine; 
     range.Text += "Here is another line Sikertelen csatlakozás with some text" + Environment.NewLine; 

     String strSearch = "Sikertelen csatlakozás"; 
     int start = range.Text.IndexOf(strSearch); 

     TextPointer tp = null; 

     if (start > -1) 
     { 
      tp = range.Start.GetPositionAtOffset(start); 
     } 

     while (tp != null) 
     { 
      TextPointer tpLine = tp.GetLineStartPosition(0); 

      TextPointer tpLineEnd = tp.GetLineStartPosition(1); 
      TextPointer lineEnd = (tpLineEnd !=null ? tpLineEnd : tp.DocumentEnd).GetInsertionPosition(LogicalDirection.Backward); 

      TextRange redText = new TextRange(tpLine, lineEnd); 
      redText.ApplyPropertyValue(TextElement.ForegroundProperty, Brushes.Red); 
      tp = tpLineEnd; 

      if (tp != null) 
      { 
       start = range.Text.IndexOf(strSearch, start + 1); 

       if (start > -1) 
       { 
        tp = range.Start.GetPositionAtOffset(start); 
       } 
      } 
     } 
    } 

ich verwendet, um die folgenden Stack-Überlauf-Links für Einzelheiten auf den Text zu finden: WPF Richtextbox Application.Find Text spanning Multiple runs, bekommen Sie die Zeile: Using GetLineStartPosition to get the end of a line in WPF RichTextBox und Färbung schließlich den Text: Change color and font for some part of text in WPF C#