Salut!!
J'ai un datagridview qui fait 76 colonnes et 60 lignes. Lorsque je veux l'imprimer, je clique sur un bouton, et j'affiche un aperçu avant impression du document contenant le datagridview.
Seulement, de base, il cherche à imprimer le datagridview sur 1 seule page, et mon doc est illisible du coup (je travaille en portrait).
J'ai cherché un peu partout (notamment la MSDN) et j'ai surchargé l'évènement PrintDoc_PrintPage() pour essayer d'imprimer sur plusieurs pages. j'arrive à déterminer combien je peux avoir de colonnes au max / page et combien de lignes / page, ainsi que le nombre total de pages dont je vais avoir besoin.
Néanmoins, malgré tout mes tests, l'aperçu affiche toujours une seule page avec le datagridview illisible et pareil pour l'impression.
voici mon ev:
Quelqu'un a t il une idée ?
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
26
27
28
29
30
31
32
33 private void m_printDoc_PrintPage(object sender, PrintPageEventArgs ev) { PageCurrent++; //ToDo: Ajouter les colonnes header int RowBorneMax = (RowCurrent + NbRowPerPage); int i = ColCurrent; int ColBorneMax = (ColCurrent + NbColPerPage); for (; RowCurrent < RowBorneMax; RowCurrent++) { string sb_items = ""; for (; i < ColBorneMax; i++) { if(RowCurrent < this.Items.Count && ColCurrent < this.Columns.Count) sb_items += "| " + this.Items[RowCurrent].SubItems[ColCurrent].Text + "| "; } float yPos = ev.MarginBounds.Top + (RowCurrent * printFont.GetHeight(ev.Graphics)); ev.Graphics.DrawString(sb_items, printFont, Brushes.Black, ev.MarginBounds.Left, yPos); } ColCurrent = i; if (RowCurrent < this.Items.Count || ColCurrent < this.Columns.Count || PageCurrent < NbTotalPages ) { ev.HasMorePages = true; } else { ev.HasMorePages = false; } }
Merci à tous !!
Oti$
Partager