如何将RichTextbox添加到彩色字符串和字符串的其余部分?

时间:2017-01-31 14:33:01

标签: c# .net winforms richtextbox

foreach(string line in lines)
{
    richTextBox1.AppendText(line);
    RichTextBoxExtensions.AppendText(richTextBox1, "Ready: ", Color.Red);
}

如果行

  

" Hello world"

所以我想要的是RichTextBox1中的第一行:

  

准备好的Hello世界

其中Ready为红色,仅为Ready。

再次在下一行

  

准备好你好

再次Ready是红色的,但你好,它的原始颜色没有改变。

但是我得到的东西是混乱的世界就在最后一行添加就绪,并且它只在第一行不是红色。

同样在RichTextBox所有行和Ready添加为文本块而不是行。

我希望在运行程序时RichTextBox中看到的是行:

  

准备好了:Hello world   准备好了:你好,你好   准备就绪:这是一条线路   准备好了:大家好

仅限

  

准备好了:

是红色

public class RichTextBoxExtensions
{
    public static void AppendText(RichTextBox box, string text, Color color)
    {
        box.SelectionStart = box.TextLength;
        box.SelectionLength = 0;

        box.SelectionColor = color;
        box.AppendText(text);
        box.SelectionColor = box.ForeColor;
    }
    public static void UpdateText(RichTextBox box, string find, string replace, Color? color)
    {
        box.SelectionStart = box.Find(find, RichTextBoxFinds.Reverse);
        box.SelectionLength = find.Length;
        box.SelectionColor = color ?? box.SelectionColor;
        box.SelectedText = replace;
    }
}

2 个答案:

答案 0 :(得分:0)

也许你可以这样做

using System;
using System.Drawing;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        richTextBox1.Font = new Font("Consolas", 18f, FontStyle.Bold);
        richTextBox1.BackColor = Color.AliceBlue;
        string[] words =
        {
            "a",
            "b",
            "c",
            "d",
            "e",
            "f",
            "g."
        };
        Color[] colors =
        {
            Color.Aqua,
            Color.CadetBlue,
            Color.Cornsilk,
            Color.Gold,
            Color.HotPink,
            Color.Lavender,
            Color.Moccasin
        };
        for (int i = 0; i < words.Length; i++)
        {
            string word = words[i];
            Color color = colors[i];
            {
                richTextBox1.SelectionBackColor = color;
                richTextBox1.AppendText(word);
                richTextBox1.SelectionBackColor = Color.AliceBlue;
                richTextBox1.AppendText(" ");
            }
        }
    }
}

}

答案 1 :(得分:0)

反转for循环中的2行代码,然后添加if。 这个小小的修正:

Environment.NewLine

使用此列表进行测试:

foreach (string line in lines)
{
    RichTextBoxExtensions.AppendText(richTextBox1, "Ready: ", Color.Red);
    richTextBox1.AppendText(line + Environment.NewLine);
}

带来了这个结果:

enter image description here