2011-05-12 10 views
5

Algo que se parece a esto:¿Cómo se alternan los colores de línea para un Winforms RichTextBox?

enter image description here

¿Existe una línea como la propiedad en el que podía hacer ?:

foreach line ... 
    line.BackColor = Colors.Gray; 

Lines[i] retornos de propiedad sólo una cadena.

+1

Simplemente seleccione el texto hasta llegar a un punto y coma. A continuación, establezca .SelectionBackColor (o la propiedad correspondiente) en Grey. – Marlon

+0

Gracias, pero ¿configurará toda la línea de color o hasta el último carácter en esa línea? Porque quiero toda la línea, ya sea que esté vacía o no. –

+1

No creo que RTF pueda hacer eso en absoluto. – SLaks

Respuesta

4

Una solución no tan buena sería agregar texto adicional en cada línea y luego resaltar el texto completo. Así que algo como esto:

// Update lines to have extra length past length of window 
string[] linez = new string[richTextBox1.Lines.Length]; 
for (int i = 0; i < richTextBox1.Lines.Length; i++) 
{ 
    linez[i] = richTextBox1.Lines[i] + new string(' ', 1000); 
} 
richTextBox1.Clear(); 
richTextBox1.Lines = linez; 

for(int i = 0; i < richTextBox1.Lines.Length; i++) 
{ 
    int first = richTextBox1.GetFirstCharIndexFromLine(i); 
    richTextBox1.Select(first, richTextBox1.Lines[i].Length); 
    richTextBox1.SelectionBackColor = (i % 2 == 0) ? Color.Red : Color.White; 
    richTextBox1.SelectionColor = (i % 2 == 0) ? Color.Black : Color.Green; 
} 
richTextBox1.Select(0,0); 

Se vería así:

RichTextBox with colored lines http://i53.tinypic.com/nf4pxe.jpg

Cuestiones relacionadas