【问题标题】:How can i color the richTextBox specific text once in yellow and once in red?如何将richTextBox 特定文本着色一次为黄色,一次为红色?
【发布时间】:2016-11-09 05:21:20
【问题描述】:

我在表单中有以下代码可以向RichTextBox 添加文本。

public void SetText(string text)
{
    richTextBox2.Text = text;
    SetRichTextBoxColors(true);
}

private void SetRichTextBoxColors(bool yellow)
{
    if (yellow)
    {
        // color text in red
    }
    else
    {
        // color text in yellow
    }
}

每个按钮单击SetText 获取一个新文本并将其添加到richTextbox2。 我希望第一次添加的文本是黄色的,然后下一次是红色,然后是黄色,然后是红色......

我做了一个新的形式:

private void button1_Click(object sender, EventArgs e)
{
    _form1.SetText(textBox1.Text);
}

我应该在SetRichTextBoxColors 方法中添加什么来使其工作?

【问题讨论】:

  • 您的要求不够明确,您现在面临的困难是什么?
  • @un-lucky 在 SetText 中,一旦它为真,一旦为假,我如何做到这一点?
  • 所以你想将文本框中的文本添加到 RichTextBox,如果 TextBox 中的文本和 RichBox 中的文本相同,则颜色为红色,否则为黄色。我说的对吗?
  • 要将文本添加到RichTextBox,您应该使用AppendText,您不应该为Text 属性分配新值。它会删除所有以前添加的文本。

标签: c# .net winforms richtextbox


【解决方案1】:

您可以在表单级别使用标志来确定是否应该使用黄色。然后在方法中,检查标志,决定使用哪种颜色,然后添加彩色文本并反转标志:

bool yellow = true;
public void AddText(string text)
{
    richTextBox1.SelectionStart = richTextBox1.Text.Length;
    richTextBox1.SelectionLength = 0; ;
    richTextBox1.SelectionColor = yellow ? Color.Yellow : Color.Red;
    richTextBox1.SelectedText = text;
    yellow = !yellow;
}

注意

  • 要替换整个内容,您可以为Text 属性赋值。
  • 要附加文本,您可以使用AppendText 方法。
  • 要为整个内容使用单一颜色,您可以为ForeColor 属性指定颜色。
  • 要在RichTextBox 的任何索引处插入彩色文本,您可以将SelectionStart 设置为指定索引,SelectionLength 设置为0SelectionColor 设置为指定颜色,然后将给定文本分配给SelectionText财产。

【讨论】:

  • 我认为,SelectionLength 应该是 text.Length
  • @דניאלרשת 只需复制该方法并将其粘贴到您的类中,您就会看到它正常工作:)
  • @un-lucky 它使richtextbox忽略当前选择,以防止改变当前选择的颜色。
  • @RezaAghaei 工作完美:)
猜你喜欢
  • 2017-02-05
  • 1970-01-01
  • 1970-01-01
  • 2018-08-26
  • 1970-01-01
  • 1970-01-01
  • 2011-04-15
  • 2014-03-25
  • 1970-01-01
相关资源
最近更新 更多