Bonjour,
voilà c'est sans doute très bête comme question, mais j'ai fait en sorte d'avoir la possibilité d'utiliser une alternance de 2 couleurs pour la BackColor des rows de mes DataGridView.
Apparemment certains utilisateurs trouvent cela plus pratique pour la visualisation ...

Donc, dans mon contrôle personnalisé de DataGridView, j'ai fait ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
private void OnRowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
{
       if (Properties.Settings.Default.LignesColorees)
       {
            DataGridViewRow row = Rows[e.RowIndex];
 
            if (e.RowIndex % 2 == 0)
            {
                 row.DefaultCellStyle.BackColor = Properties.Settings.Default.ColorLignesColorees;
            }
            else
            {
                 row.DefaultCellStyle.BackColor = Color.White;
            }
 
      }
}
Cela marche bien sauf dans le cas où un filtrage est appliqué sur les rows (càd que certains rows sont en Visible = false)

Je m'étais dit, que au lieu d'utiliser l'index de la row, j'allais utiliser la propriété DisplayIndex de la row (comme pour les colonnes), sauf que cette propriété n'existe pas ...

Donc je ne vois pas trop comment gérer ce cas de figure, si vous avez des idées, elles sont les bienvenues !

Merci d'avance !


EDIT : Autant pour moi, je viens de me souvenir de la propriété AlternatingRowsDefaultCellStyle

Mais le problème reste toujours le même pour le filtrage :/