2009-11-24 5 views

Répondre

2
foreach (DataGridViewRow row in dataGridView.Rows) 
{ 
    if (row.Cells[0].Value.ToString() == "someVal") 
    { 
     row.DefaultCellStyle.BackColor = Color.Tomato; 
    } 
} 
+0

Merci.J'affecte juste la source de données.Ainsi, ce code doit être inclus après l'affectation de la source de données. Droite? – Nila

+0

oui, vous devriez le faire après la source de données assignée –

0

La définition de la couleur par défaut coloriera la ligne entière. Définir une valeur par défaut pour une seule ligne semble être une mauvaise idée. Vous auriez besoin d'une instruction else pour toutes ces lignes qui ne vont pas dans le setcell de style "someVal" pour ne pas les colorer comme le reste car elles ne prennent aucune action. De plus, le typage par type de valeur devrait vous donner de meilleures performances que ToString(). Je peux imaginer que ce sera probablement bouclé sur toute la liste pour chaque mise à jour.

Au lieu de cela, juste pour colorer une seule cellule, faire comme ceci:

foreach (DataGridViewRow row in dataGridView.Rows) 
{ 
    if ((string)row.Cells[0].Value == "someVal") 
    { 
     row.Cells[0].Style.BackColor= Color.Tomato; 
    } 
} 
1

En cas CellFormatting de la grille que vous pouvez vérifier les valeurs qui vont être affichés, et changer le CellStyle en conséquence .

Vous pouvez utiliser les propriétés RowIndex et ColumnIndex des arguments d'événement pour vérifier quelle cellule doit être affichée. Et vous pouvez définir la propriété CellStyle, quand elle doit être modifiée (par exemple e.CellStyle.ForeColor = Color.Red;).

0

Si vous souhaitez simplement changer la cellule actuellement sélectionnée.

private void grid1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) 
    { 

     grid1.CurrentCell.Style.SelectionBackColor = Color.Red; 


    } 
Questions connexes