Bonjour à tous,

Afin de personnaliser un peu mes datagridview, j'aurais aimé pouvoir définir une image de fond pour les headers de mes datagridview.

Je possède une image de 1px*24 que je souhaite répeter sur toute la largeur de la colonne.

J'ai tenté d'utiliser la fonction CellPainting comme suit :

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
 private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
        {
            if (e.RowIndex<0 && e.ColumnIndex==1)
 
            {
 
                e.Graphics.DrawImage(new Bitmap("header_data.bmp"), e.CellBounds);
 
                e.Handled = true;
 
            }
 
 
 
 
        }
Mais seul problème la colonne ne se remplit pas entièrement avec l'image :
http://imageshack.us/photo/my-images...agridview.png/

On notera cependant que plus je passe ma souris devant la colonne plus le header va se remplir avec mon image.

De plus, j'aimerais garder le titre de la colonne, j'ai donc rajouté :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
e.PaintContent(e.ClipBounds);
mais le texte apparait en noir, il n'y a pas moyen de le faire apparaitre blanc?

J'ai également essayé de faire de remplir manuellement avec une boucle :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
while(i<datagridview.Width)
{
Drawimage(new Bitmap, new Point(i,0));
i++;
}
Dans ce cas là la colonne se remplit entièrement mais il est impossible d'afficher le texte sans que la colonne ne cesse de se rafraichir.


La seule solution que j'ai trouvé est de remplir la cellule avec une image de 200 px (>> à la taille de toutes mes colonnes donc) mais j'ai toujours mon texte en noir.

La meilleure solution ne serait pas alors de redessiner le texte de chaque cellule avec Drawstring ? dans tous les cas je n'ai pas réussi, un petit exemple serait le bienvenue

Merci d'avance,