2009-08-31 6 views
6

J'ai un DataGridView qui est rempli en définissant son DataSource à une liaison de données.C# /. NET comment mettre en évidence certaines lignes dans DataGridView

Maintenant je veux avoir certaines lignes dans le DataGridView ayant différentes Backgroundcolor en fonction de certaines valeurs dans la ligne elle-même.

Comment puis-je éventuellement accomplir cela?

+0

Je pense que vous pouvez trouver des informations utiles de cette question. http://stackoverflow.com/questions/1078782/c-iterate-over-datagridview-change-row-color – rahul

Répondre

7

Il y a un excellent exemple here.

Le concept est que vous abonner à des événements de la grille. Lorsqu'une cellule est remplie, un événement est déclenché et basé sur la valeur que vous pouvez mettre en forme la cellule, etc.

1

Dans le gestionnaire d'événements CellFormatting de votre datagridview, vous pouvez définir la couleur de fond par défaut pour toute ligne souhaitée.

private void MyDataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) 
    { 

     if (e.RowIndex == rowIndexToHighlight) 
     { 
      e.CellStyle.BackColor = Color.Green; 
     } 

    } 
+1

-1 parce que cet exemple a des implications de performances vraiment médiocres. Si vous utilisez la liaison de données, la grille de données devra conserver les enregistrements de lignes en double. L'exemple de Psasik évite les lignes de non-partage. – Kleinux

+0

@Kleinux: C'est un commentaire intéressant sur le maintien des enregistrements de lignes en double. Pourriez-vous expliquer pourquoi c'est ainsi? Merci – Andy

+1

Si vous regardez dans les documents que vous aurez, il est fait mention de lignes partagées ou non partagées. Le code ci-dessus force la vue de grille à créer des enregistrements DataGridViewRow réels pour chaque ligne de votre source de données. Ces lignes ne sont pas des doublons dans le sens des valeurs de cellule, elles peuvent toujours lire la source de données pour cela, mais elles ne devraient pas exister autrement à cause des informations de style maintenant requises. J'espère avoir fait mon commentaire un peu plus clair. C'est un bon tutoriel http://msdn.microsoft.com/en-us/library/ha5xt0d9.aspx – Kleinux

1

Vous pouvez utiliser le RowPrePaint pour changer la couleur ou le style de toute la ligne