C# 如何向RichTextbox中添加彩色字符串和其他字符串?

C# 如何向RichTextbox中添加彩色字符串和其他字符串?,c#,.net,winforms,richtextbox,C#,.net,Winforms,Richtextbox,如果线路是 “你好,世界” 所以我想要的是RichTextBox1中的第一行: 准备好了吗 其中Ready为红色,仅Ready为红色 再下一行 准备好了吗你好 同样,Ready是红色的,但hi hello的原色没有改变 但我得到的是混乱的世界准备好了是添加在最后一行后,它不是红色的,只有在第一行 同样在RichTextBox中,所有行和准备添加为文本块而不是行 运行程序时,我想在RichTextBox中看到的是行: 准备好:你好,世界 准备好了:嗨,你好 准备好了:这是一条线 准备好了:大家好

如果线路是

“你好,世界”

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

准备好了吗

其中Ready为红色,仅Ready为红色

再下一行

准备好了吗你好

同样,Ready是红色的,但hi hello的原色没有改变

但我得到的是混乱的世界准备好了是添加在最后一行后,它不是红色的,只有在第一行

同样在
RichTextBox
中,所有行和准备添加为文本块而不是行

运行程序时,我想在
RichTextBox
中看到的是行:

准备好:你好,世界
准备好了:嗨,你好
准备好了:这是一条线
准备好了:大家好

只有

就绪:

它是红色的

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

也许你可以这样做

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;
    }
}
使用系统;
使用系统图;
使用System.Windows.Forms;
命名空间Windows窗体应用程序1
{
公共部分类Form1:Form
{
公共表格1()
{
初始化组件();
}
私有void Form1\u加载(对象发送方、事件参数e)
{
richTextBox1.Font=新字体(“Consolas”,18f,FontStyle.Bold);
richTextBox1.BackColor=Color.AliceBlue;
字符串[]字=
{
“a”,
“b”,
“c”,
“d”,
“e”,
“f”,
“g。”
};
颜色[]颜色=
{
颜色,浅绿色,
Color.CadetBlue,
颜色,玉米丝,
颜色,金色,
颜色,粉红色,
颜色,薰衣草,
颜色:软呢帽
};
for(int i=0;i

}

反转for循环中的两行代码,然后添加
Environment.NewLine
。 这一微小的修正:

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(" ");
            }
        }
    }
}
使用此列表测试它:

foreach (string line in lines)
{
    RichTextBoxExtensions.AppendText(richTextBox1, "Ready: ", Color.Red);
    richTextBox1.AppendText(line + Environment.NewLine);
}
List lines=new List(){“你好,世界”,“你好”,“这是一行”};
产生这一结果:

List<string> lines = new List<string>() { "Hello world", "hi hello", "this is a line"};