如何更改RichTextBox中某一行的背景颜色?

时间:2011-03-01 13:29:36

标签: .net winforms c#-4.0

我想改变整行的颜色,无论文本是否存在。以下是一些解释图片:

http://img131.imageshack.us/img131/1802/highlightlineqt2.png

我找到了一些解决方案here,但我希望有一个更简单的解决方案。

3 个答案:

答案 0 :(得分:2)

不,您首先必须选择该行,然后您必须设置颜色:

 public void MarkSingleLine()
 {
     int firstCharOfLineIndex = myRichTextBox.GetFirstCharIndexOfCurrentLine();
     int currentLine = richTextBox1.GetLineFromCharIndex(firstCharOfLineIndex);
     this.myRichTextBox.Select(firstCharOfLineIndex, currentLine);
     this.myRichTextBox.SelectionBackColor = Color.Aqua;
     this.myRichTextBox.Select(0, 0);
 }

答案 1 :(得分:0)

o.k。,然后可能是这个(found here):

private void richTextBox1_MouseClick(object sender, MouseEventArgs e, Color color)
{
    int firstcharindex = richTextBox1.GetFirstCharIndexOfCurrentLine();
    int currentline = richTextBox1.GetLineFromCharIndex(firstcharindex);
    string currentlinetext = richTextBox1.Lines[currentline];
    richTextBox1.SelectionBackColor = color;
    richTextBox1.Select(firstcharindex, currentlinetext.Length);
}

此代码段可以解决您的问题; - )

答案 2 :(得分:0)

您可以使用以下代码:

private void richTextBox_LOG_write_text(string text, Color text_color, Color background_color)
    {
        try
        {
            if(richTextBox_LOG.InvokeRequired == true)
            {
                Invoke(new Delegate_void_string_colortext_colorbackground(richTextBox_LOG_write_text), new object[] { text, text_color, background_color  });
            }
            int text_size = richTextBox_LOG.Text.Length;
            richTextBox_LOG.AppendText(text);
            richTextBox_LOG.Select(text_size, text.Length);
            if(text_color == null)
            {
                text_color = Color.Black;
            }
            richTextBox_LOG.SelectionColor = text_color;
            if(background_color != null)
            {
                richTextBox_LOG.SelectionBackColor = background_color;
            }
        }
        catch { }
    }