Voila suite à ce post :
http://www.developpez.net/forums/sho...d.php?t=503613
j'ai réussi à avancer.
Pour résumer, je veux afficher un icone dans le header des colonnes sur lequel je clique.(pour un datagridview).
Pour cela j'utilise CellPainting, mais j'ai un souci.
Si aucune fenetre ne vient par dessus celle de mon application ou si les en tetes de colonnes sont redimensionnées tout marche a peu pres correctement et ça me donne le jpg ok en piece jointe.
Et sinon si les cellules des en tete de colonnes sont redimensionnées ou si une fenetre passe par dessus la mienne tout par en vrac (plus de texte, le backcolor est changé,etc) : pasOK en fichier attaché.
VOici mon code :
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
19
20
21
22
23
24
25 private void liste_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) { //TableauHeadersClicked est un tableau de booléens pour savoir le statut des headers, si cliqué ou pas //ex : TableauHeadersClicked[0]=true : la 1ere colonne à été cliquée //je vérifie de plus si la cellule dessinée actuellement est bien un header de colonne. if ((e.RowIndex == -1) && (e.ColumnIndex >= 0) && (TableauHeadersClicked[e.ColumnIndex])) { try { Icon ico = Properties.Resources.Flechebas; Rectangle rctg = new Rectangle(); rctg.X = e.CellBounds.X + 7; rctg.Y = e.CellBounds.Y + 2; rctg.Size = ico.Size; e.Graphics.DrawIcon(ico, rctg); e.Handled = true; } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } else { e.Handled = false; } }
Partager