按案例换色

时间:2018-03-15 22:57:07

标签: c# colors richtextbox

我正在尝试根据特定表单列出RichTextBox框中data.txt中文本编辑器的数据。我的data.txt文件由4列组成。根据第一列中的数据,第2列和第3列中的数据将着色。例如,根据第1列中的“kmy”数据;第2列中的数据为“k”,第2列中的数据为红色,第3列中的数据为“m”,第3列中的数据为蓝色,第4列中的数据为“y”,因此我尝试将第4列中的数据以绿色列为richtextbox。

这是我的代码;

public static class RichTextBoxExtensions
{
    public static void AppendText(this RichTextBox box, string text, Color color)
    {
        box.SelectionColor = color;
        box.AppendText(text);
    }

}

public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();
    }

    private void Form2_Load(object sender, EventArgs e)
    {
        int count = 0;
        List<string> lines = File.ReadAllLines("data.txt").ToList();
        foreach (string current in lines)
        {
            string[] dataArray = current.Split(' ');
            string color1;
            string color2;
            string color3;

            Color color11;
            Color color22;
            Color color33;

            if (count % 2 == 0) { 
            richTextBox1.SelectionFont = new Font(richTextBox1.Font, FontStyle.Bold);
            }
            count++;

            color1 = dataArray[0].Substring(0, 1);
            color2 = dataArray[0].Substring(1, 1);
            color3 = dataArray[0].Substring(2, 1);

            if (color1 == "k")
            {
                color11 = Color.Red;
            }
            else if (color1 == "m")
            {
                color11 = Color.Blue;
            }
            else if (color1 == "y")
            {
                color11 = Color.Green;
            }

            if (color2 == "k")
            {
                color22 = Color.Red;
            }
            else if (color2 == "m")
            {
                color22 = Color.Blue;
            }
            else if (color2 == "y")
            {
                color22 = Color.Green;
            }

            if (color3 == "k")
            {
                color33 = Color.Red;
            }
            else if (color3 == "m")
            {
                color33 = Color.Blue;
            }
            else if (color3 == "y")
            {
                color33 = Color.Green;
            }

            richTextBox1.AppendText(dataArray[1] + " ", Color.Red);
            richTextBox1.AppendText(dataArray[2] + " ", Color.Blue);
            richTextBox1.AppendText(dataArray[3] + " ", Color.Green);
            richTextBox1.AppendText("\n");
        }
    }
}

我的问题是

richTextBox1.AppendText(dataArray[1] + " ", Color.Red);
richTextBox1.AppendText(dataArray[2] + " ", Color.Blue);
richTextBox1.AppendText(dataArray[3] + " ", Color.Green);

我的data.txt;

kmy USA Washington 212
ymy England London 123

k red,m blue y green。 美国红色华盛顿蓝色和212必须是绿色

如何在Color.Red,Color.Blue,Color.Green部分中使用color11,color22,color33 T恤打印颜色?

由于我的语言问题,我很难表达它。我在等你的帮忙。

1 个答案:

答案 0 :(得分:0)

据我所知,你是不是想尝试做这样的事情?

 richTextBox1.AppendText(dataArray[1] + " " + "Red");
 richTextBox1.AppendText(dataArray[2] + " " + "Blue");
 richTextBox1.AppendText(dataArray[3] + " " + "Green");
这是你想要的吗?或者你想要RichTextBox ??的颜色?如果您想要富文本框中的颜色,最简单的方法是创建3种不同颜色的图片,然后将图片粘贴到richtextbox中:

 image img = Image.FromFile(FilePathHere);
 Clipboard.SetImage(img);
 richtextbox1.Paste();

或者您是否想要更改richtextbox文本的前景色?

 richtextbox1.ForeColor = color.Red

与你的代码结合,只需这样做:

  richtextbox1.ForeColor = Color.Red
  richTextBox1.AppendText(dataArray[1] + " ")
  richtextbox1.ForeColor = Color.Blue
  richTextBox1.AppendText(dataArray[2] + " ")
  richtextbox1.ForeColor = Color.Green
  richTextBox1.AppendText(dataArray[3] + " ")