2012-07-16 2 views
0

У меня есть Datagridview и вы хотите изменить цвет строк так: Все строки, имеющие одинаковое значение в первом столбце, должны иметь один и тот же цвет.
Я сделал это, чтобы достичь этого:DefaultCellStyle.Backcolor дает мне неправильный цвет в DataGridView в C#

private void AlternatingRows() 
    { 
     foreach (DataGridViewRow row in dataGridView_daten.Rows) 
     { 
      if (row.Index > 0) 
      { 
       if (row.Cells[0].Value.ToString().Substring(0, 5) == dataGridView_daten.Rows[row.Index - 1].Cells[0].Value.ToString().Substring(0, 5)) 
       { 
        row.DefaultCellStyle.BackColor = dataGridView_daten.Rows[row.Index - 1].DefaultCellStyle.BackColor; 
       } 
       else if (dataGridView_daten.Rows[row.Index - 1].DefaultCellStyle.BackColor == Color.AliceBlue) 
       { 
        row.DefaultCellStyle.BackColor = Color.FromArgb(226, 241, 254); 
       } 
       else if (dataGridView_daten.Rows[row.Index - 1].DefaultCellStyle.BackColor == Color.FromArgb(226, 241, 254)) 
       { 
        row.DefaultCellStyle.BackColor = Color.AliceBlue; 
       } 
      } 
     } 
    } 

Так в основном, если значение первой ячейки такой же, как в строке выше, цвет должен быть таким же ... Я называю этот метод после того, как я связан Data to DataGridView ... Я также попытался назвать это в событии CellFormatting, но это не сработало. Моя проблема в том, что строки все еще имеют одинаковый цвет. Когда я его отлаживаю, DefaultCellStyle.BackColor пуст ... Почему возврат DefaultCellStyle.BackColor пуст?
Как что положение else if (dataGridView_daten.Rows[row.Index -1].DefaultCellStyle.BackColor == Color.FromArgb(226, 241, 254)) If никогда не будет правды ...

ответ

0

я решил его с color, что изменениями, когда число изменений:

private void AlternatingRows() 
    { 
     foreach (DataGridViewRow row in dataGridView_daten.Rows) 
     { 
      if (row.Index > 0) 
      { 
       if (row.Cells[0].Value.ToString().Substring(0, 5) != dataGridView_daten.Rows[row.Index - 1].Cells[0].Value.ToString().Substring(0, 5)) 
       { 
        if (Farbe == Color.FromArgb(226, 241, 254)) 
         Farbe = Color.AliceBlue; 
        else 
         Farbe = Color.FromArgb(226, 241, 254); 
       } 
       row.DefaultCellStyle.BackColor = Farbe; 
      } 
     } 
    } 
Смежные вопросы