Afficher toutes les pages de PrintDocument sur PrintPreviewControl
-
18-09-2019 - |
Question
Je ne parviens pas à créer plusieurs pages dans un PrintDocument et les afficher dans un PrintPreviewControl. Je peux créer une page assez facilement, mais chaînant plusieurs pages me éludant.
Je vais éventuellement dessiner plusieurs pages de choses à l'aide de GDI, mais je ne peux pas obtenir quelque chose comme cela fonctionne comme prévu.
private PrintDocument doc = new PrintDocument();
private string[] printMe = new string[]{ "page1", "page2", "page3" );
private int pageCount = 0;
private void FormLoad(object sender, EventArgs e)
{
doc.PrintPage += new PrintPageEventHandler(PrintPage);
PrintPreviewControl.Document = doc;
}
private void doc_BeginPrint(object sender, PrintEventArgs e){ pageCount = 0; }
private void PrintPage(object sender, PrintPageEventArgs e)
{
Graphics g = e.Graphics;
g.DrawString(drawMe[pageCount++], "Lucida Console", Brushes.Black, new Point(20,20));
e.HasMorePages = (pageCount printMe.Length );
}
L'idée étant que 3 pages distinctes sont créées et affichées dans le contrôle PrintPreview. Qu'est-ce que je manque?
La solution
extrait de code obtenu mutilée exactement au point critique, où vous attribuez e.HasMorePages. Il y a un problème flagrant dans votre code. Vous devez implémenter un gestionnaire d'événements BeginPrint pour réinitialiser le compteur de pages à 0
Autres conseils
Je ne sais pas comment afficher toutes les pages par défaut, mais vous pouvez afficher plus d'une page dans le PrintPreviewControl
en définissant la propriété de Columns
, a trouvé dans la Mise en page de la propriétés fenêtre, et / ou la propriété Rows
, trouvé dans le Comportement article, à une valeur supérieure à 1.