2017-06-02 9 views
0

各行の色を付けるには、各文字列フォームリストの最後の文字に依存する必要があります。これは私のコードであり、常に最終行を緑色にしています。どうしたの?c#リッチテキストボックスの各行の色付け方法

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

_richTextBox1.Text + = _ Boom。テキストを変更しないでください!!!!そうしないと、フォーマットが失われます。あなたは以下のようにしてShereTextを交換することができます。 – TaW

+0

'常に最後の行を緑色にする'本当に[このコードをコンパイルすれば](https://dotnetfiddle.net/hXHqy8) ](http://i.imgur.com/1n531J5.png)いずれにしても、最初に[ブレークポイントの使用方法を学ぶ](https://www.google.com/search?q=how+to + +ビジュアル+スタジオ+デバッガ&oq = +ビジュアル+スタジオ+デバッガ&aqs = chrome.0.0l6.3343j0j4&sourceid = chrome&ie = UTF-8を使用してコードをステップ実行する – sab669

+0

また、なぜあなたは現在の行の最後の文字をチェックする** ** 4回**チェックする必要があるのは 'richTextBox1.SelectionBackColor =(pom.Substring(...)== 'n') ?Color.Red:Color.Green'はあなたが必要とするものです。個々の 'if'文は必要ありません。最後の文字が' n'かどうかは既に決めています。 if文の中でもう一度チェックし、上にその三元表現の結果にかかわらず同じ色を割り当てます。 – sab669

答えて

1

だけではなく、全体でそれを修正するのテキストを追加し

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

によって

richTextBox1.Text += "[" + 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; 
} 
関連する問題