2017-05-06 4 views
0
string words; 
    private void Colors(object sender, EventArgs e) 
    { 
     Color tags = new Color(); 
     tags = Color.FromArgb(33, 66, 99); 
    } 
    private Color FromRgbExample() 
    { 
     // Create a green color using the FromRgb static method. 
     Color myRgbColor = new Color(); 
     myRgbColor = Color.FromArgb(0, 255, 0); 
     return myRgbColor; 
    } 
    private void CheckKeyword(string word, Color color, int startIndex) 
    { 
     words = word; 
     if (this.richTextBox1.Text.Contains(word)) 
     { 
      int index = -1; 
      int selectStart = this.richTextBox1.SelectionStart; 

      while ((index = this.richTextBox1.Text.IndexOf(word, (index + 1))) != -1) 
      { 

       this.richTextBox1.Select((index + startIndex), word.Length); 
       this.richTextBox1.SelectionColor = color; 
       this.richTextBox1.Select(selectStart, 0); 
       this.richTextBox1.SelectionColor = Color.Black; 
      } 
     } 
    } 
    private void richTextBox1_TextChanged(object sender, EventArgs e) 
    { 

     this.CheckKeyword("html", Color.Green, 0); 
     this.CheckKeyword("head", Color.Green, 0); 

     if (richTextBox1.Text.Contains(words) == false) 
     { 
      this.richTextBox1.SelectionColor = Color.Black; 
     } 
    } 


} 

Wenn ich schreibe "html" Text wird grüne Farbe haben, wenn ich einen Brief von "html" löschen wird er immer noch mit grüner Farbe sein. Wie kann ich tun, nachdem ich einen Buchstaben gelöscht habe, um die Farbe "html" wieder in Schwarz zu ändern?C# Richbox Farbe ändern

+0

Sie müssen __all__ die Prüfungen und und die Färbung jedesmal wiederholen, wenn Sie den Text ändern. Dies bedeutet, dass alles schwarz und dann neu zu färben. Vielleicht können Sie optimieren, aber da ein TextChanged über einen einzelnen Buchstaben oder ganze Absätze sein kann einfügen oder gelöscht wird dies nicht trivial sein. – TaW

+0

Farben war nur ein Test, ich möchte wissen, wie das zu tun, wenn (richTextBox1.Text.Contains (words) == false) { this.richTextBox1.SelectionColor = Color.Black; } –

+0

Nun, das ist, wie man das macht, aber Sie müssen auch den Teil des Textes, den Sie einfärben wollen, auswählen. Schreiben Sie am besten eine Funktion, die alle Schlüsselwörter findet und sie einfärbt. [Siehe hier] (http://stackoverflow.com/questions/26530443/how-do-you-search-for-a-string-in-a-rich-text-box-and-highlight-all-found-or -hig/26533012 # 26533012) für ein Beispiel .. – TaW

Antwort

0
private void richTextBox1_TextChanged(object sender, EventArgs e) 
{ 
    richTextBox1.Select(0,richTextBox1.Text.Length -1); 
    richTextBox1.SelectionColor = Color.Black; 
    richTextBox1.SelectionStart = 0; 

    this.CheckKeyword("html", Color.Green, 0); 
    this.CheckKeyword("head", Color.Green, 0); 

    if (richTextBox1.Text.Contains(words) == false) 
    { 
     this.richTextBox1.SelectionColor = Color.Black; 
    } 
}