2016-05-13 16 views
0

Ich möchte die gesamte Zeile markieren, von Anfang bis Ende spielt keine Rolle, ob Zeichen vorhanden sind oder nicht, und Zeile kann leer sein, aber es sollte die komplette Zeile markieren.Markieren Sie die gesamte Zeile in einer RichTextBox

Wie
enter image description here

+0

Sie müssen wissen, ob WordWrap aktiviert oder deaktiviert ist. – TaW

+0

http://www.codeproject.com/Questions/166848/richTextbox-Highlight-complete-line – CodeCaster

+0

Es wird gut sein. – Kamlesh

Antwort

0

Dies wird eine volle Linie in einem RichTextBox markieren, wenn WordWrap ausgeschaltet ist:

void highLightALine(RichTextBox rtb, int line, Color hiLight) 
{ 
    int i1 = rtb.GetFirstCharIndexFromLine(line); 
    int i2 = rtb.GetFirstCharIndexFromLine(line + 1); 
    if (i2 < 0) i2 = rtb.Text.Length; 

    rtb.SelectionStart = i1; 
    rtb.SelectionLength = i2 - i1; 
    rtb.SelectionBackColor = hiLight; 
} 

Beachten Sie, dass, wenn WordWrap wahr ist, wird es noch die Zeile markieren, aber nur so weit wie es ist sichtbar. Seine Fortsetzung in der nächsten Zeile wird nicht geändert.

Beachten Sie auch, dass nur Text hervorgehoben werden kann. Leerraum kann nicht hervorgehoben werden afaik. Here ist ein Beispiel für den Versuch, eine RTB-Unterklasse zu zeichnen.

+0

Ich möchte die gesamte Zeile auch die leeren Leerzeichen hervorheben. – Kamlesh