簡體   English   中英

C#如何為richtextbox中的每一行着色

[英]c# how to color each lines in richtextbox

我需要給每行上色取決於每個字符串形式列表中的最后一個字符。 這是我的代碼,它總是使最后一行變為綠色。 它出什么問題了?

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;                  
            }
        }      

只需更換

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

通過

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

附加文本,而不是整個修改文本。 使用+=將替換整個字符串,因此每次都會丟失設置的顏色。 請改用AppendText

您也可以刪除代碼中不必要的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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM