2014-05-09 46 views
0

DataGridView ..我专注于第一列。在GRID LOAD中突出显示具有相同值的行。
让我们假设1的高亮带有红色的行,3的高亮带有蓝色的行,5的带绿色的行。
或1的红色,3的没有高亮,5的红色再次(如替代颜色)。
C#DataGridView高亮行

想法是用相同的值在视觉上分隔行。

任何想法家伙?提前致谢。

Column1 | 
------ 
1 
1  
3 
3 
3  
5 
5 

试过,但找不出视觉分离:

int i, i_temp = 0; 
foreach (DataGridViewRow dr in dgv.Rows) 
     { 
      i = int.Parse(dr.Cells["Column1"].Value.ToString()); 
      if (i_temp == int.Parse(dr.Cells["Column1"].Value.ToString())) 
      { 
       dr.DefaultCellStyle.BackColor = Color.Red; 
       i_temp = i; 
      } 
     } 

回答

0

的规定的方式做到这一点是在CellFormatting事件。

private void MyGrid_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) 
{ 
    var dr = MyGrid.Rows[e.RowIndex]; 
    var intVal = int.Parse(dr.Cells["Column1"].Value.ToString()); 
    switch (intVal) 
    { 
     case 1: 
      e.CellStyle.BackColor = Color.Red; 
      break; 
     case 3: 
      e.CellStyle.BackColor = Color.Blue; 
      break; 
     case 5: 
      e.CellStyle.BackColor = Color.Green; 
      break; 
     default: 
      break; 
    } 
} 

请注意,只有通过在e.ColumnIndex属性上设置格式条件,才能将其应用于某些列。