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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top