如何为Winforms RichTextBox实现交替行颜色?

5

类似这样的东西:

在此输入图片描述

是否有一种类似于线条的属性可以实现这样的效果?

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

Lines[i]属性仅返回一个字符串。


1
只需选择文本直到分号为止,然后将 .SelectionBackColor(或对应的属性)设置为灰色即可。 - Marlon
谢谢,但它会将整行的背景色设置还是仅限于该行的最后一个字符?因为我想要整行的背景色,无论它是否为空。 - Joan Venge
1
我认为RTF根本无法做到那一点。 - SLaks
我在某处读到,可以使此控件透明,并在文本将显示在该图像上方的位置放置一张图像。这可能吗?我可以这样做,只是不知道如何使RTB透明。 - Joan Venge
1个回答

4

一种不太好的解决方案是在每行文本后添加额外的文本,然后突出显示整个文本。就像这样:

// 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);

它看起来会像这样:

带有彩色线条的RichTextBox


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接