Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#如何给richtextbox中的每一行上色_C#_Richtextbox - Fatal编程技术网

c#如何给richtextbox中的每一行上色

c#如何给richtextbox中的每一行上色,c#,richtextbox,C#,Richtextbox,我需要根据每个字符串表单列表中的最后一个字符为每行添加颜色。这是我的代码,它总是把最后一行变成绿色。怎么了 List<string> plik = File.ReadAllLines(path).ToList(); string pom; int size = plik.Count; richTextBox1.Clear(); for (int i = 0; i < size; i++) {

我需要根据每个字符串表单列表中的最后一个字符为每行添加颜色。这是我的代码,它总是把最后一行变成绿色。怎么了

List<string> plik = File.ReadAllLines(path).ToList();
        string pom;
        int size = plik.Count;
        richTextBox1.Clear();
        for (int i = 0; i < size; i++)
        {
            richTextBox1.Text += "[" + i.ToString() + "]" + "  " + plik[i] + Environment.NewLine;
            pom =plik[i];
             richTextBox1.Select(richTextBox1.GetFirstCharIndexFromLine(i), richTextBox1.Lines[i].Length);
           // richTextBox1.Select(0, pom.Length);
            if (pom.Substring(pom.Length - 1) == "n")
            {
                richTextBox1.SelectionBackColor = pom.Substring(pom.Length - 1) == "n" ? Color.Red :Color.Red;
            }
            if(pom.Substring(pom.Length - 1) != "n")
            {
                richTextBox1.SelectionBackColor = pom.Substring(pom.Length - 1) != "n"?Color.Green:Color.Green;                  
            }
        }      
List plik=File.ReadAllLines(path.ToList();
弦聚甲醛;
int size=plik.Count;
richTextBox1.Clear();
对于(int i=0;i
只需更换

richTextBox1.Text += "[" + i.ToString() + "]" + "  " + plik[i] + Environment.NewLine;


追加文本,而不是修改整个文本。使用
+=
将替换整个字符串,因此每次都会丢失设置的颜色。改为使用
AppendText

您还可以删除代码中不必要的
if
s。这应该起作用:

for (int i = 0; i < size; i++)
{
    richTextBox1.AppendText("[" + i.ToString() + "]" + "  " + plik[i] + Environment.NewLine);
    richTextBox1.Select(richTextBox1.GetFirstCharIndexFromLine(i), richTextBox1.Lines[i].Length);
    richTextBox1.SelectionBackColor = plik[i][plik[i].Length - 1] == 'n' ? Color.Red : Color.Green;
}
for(int i=0;i
\u richTextBox1.Text+=\uboom。永远不要修改文本!!!!否则您将丢失任何格式。您可以选择(就像你在下面做的那样,然后交换扇区文本。
总是将最后一行变为绿色。
真的吗?我明白了。无论如何,我认为你应该先检查你的代码。还有,为什么你有这么多多余的代码?你检查了当前行的最后一个字符四次。你只需要检查一次。
richTextBox1.SelectionBackColor=(pom.Substring(…)='n')?Color.Red:Color.Green
是您所需要的全部。您不需要单独的
if
语句——您已经确定最后一个字符是否为
n
。然后,一旦进入if语句,您将再次检查它,并在其上指定相同的颜色,而不管该语句的结果如何表情。
for (int i = 0; i < size; i++)
{
    richTextBox1.AppendText("[" + i.ToString() + "]" + "  " + plik[i] + Environment.NewLine);
    richTextBox1.Select(richTextBox1.GetFirstCharIndexFromLine(i), richTextBox1.Lines[i].Length);
    richTextBox1.SelectionBackColor = plik[i][plik[i].Length - 1] == 'n' ? Color.Red : Color.Green;
}