2015-07-13 4 views
0

Я пытаюсь изменить цвет фона определенного столбца из моего объекта listview в C#.Изменение цвета фона подменю C#

У меня есть только две колонки: первая называется «Последовательность», а другая называется «Residue». Второй, называемый «Residue», - это столбец, который я хочу «нарисовать».

Код, который я использую, просто меняет полный фон строки, а не столбец «Residue».

Надеюсь, кто-нибудь может помочь!

Большое спасибо.

Вот мой код:

for (int i = 0; i < Variables.NSeqSNP; i++) 
     { 
      char res = Variables.SequencesSNP[i].ToString()[pos]; 
      ListViewItem lvi = new ListViewItem(Variables.SeqNameSNP[i].ToString()); 
      lvi.SubItems.Add(res + " "); 
      if (res == 'A') lvi.SubItems[0].BackColor = Color.Blue; 
      else if (res == 'T') lvi.SubItems[0].BackColor = Color.Red; 
      else if (res == 'C') lvi.SubItems[0].BackColor = Color.Green; 
      else if (res == 'G') lvi.SubItems[0].BackColor = Color.Yellow; 

      lstOutputSNP.Items.Add(lvi); 

ответ

1

Если вы пытаетесь нарисовать вторую строку, то вам нужно использовать подпункты [1]. Что касается рисования, добавьте «lvi.UseItemStyleForSubItems = false;» как видно ниже

for (int i = 0; i < Variables.NSeqSNP; i++) 
{ 
    char res = Variables.SequencesSNP[i].ToString()[pos]; 
    ListViewItem lvi = new ListViewItem(Variables.SeqNameSNP[i].ToString()); 
    lvi.SubItems.Add(res + " "); 
    lvi.UseItemStyleForSubItems = false; 
    if (res == 'A') lvi.SubItems[1].BackColor = Color.Blue; 
    else if (res == 'T') lvi.SubItems[1].BackColor = Color.Red; 
    else if (res == 'C') lvi.SubItems[1].BackColor = Color.Green; 
    else if (res == 'G') lvi.SubItems[1].BackColor = Color.Yellow; 

    lstOutputSNP.Items.Add(lvi); 
} 
+0

Он сработал! Спасибо, Ник! –

+0

Рад помочь! :) –

Смежные вопросы