2010-02-04 27 views
2

Je vais avoir du mal à créer plusieurs pages dans un PrintDocument et les afficher dans un PrintPreviewControl. Je peux créer une seule page assez facilement, mais enchaîner plusieurs pages m'échappe. Je vais éventuellement dessiner plusieurs pages de choses en utilisant GDI, mais je ne peux pas obtenir quelque chose comme ça pour fonctionner comme prévu.Afficher toutes les pages de PrintDocument sur PrintPreviewControl

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 rate?

Répondre

0

Votre extrait de code a été tronqué exactement au point critique, où vous affectez e.HasMorePages. Il y a un problème flagrant dans votre code: vous devez implémenter un gestionnaire d'événement BeginPrint pour réinitialiser le compteur de page à 0.

+0

I » J'ai ajouté un tel EventHandler, mais il n'affiche toujours que la première page de PrintPreviewControl. La fonction "PrintPage" est exécutée trois fois, mais la seule page affichée est celle qui contient la chaîne "page1". Je n'arrive pas à comprendre comment ajouter de nouvelles pages. – KarlHungus

+0

Je ne sais pas, vous n'avez pas réparé votre extrait. Juste pour être sûr: vous utilisez le sélecteur de numéro de page dans la boîte de dialogue d'aperçu correctement? En haut à droite de la barre d'outils. –

+0

Cela a vraiment fonctionné, merci; Cependant, existe-t-il un moyen d'afficher toutes les pages ensemble? Est-il possible d'afficher successivement les trois pages dans PrintPreviewControl? – KarlHungus

0

Je ne suis pas sûr de savoir 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é Columns, trouvé dans la section mise en page de la fenêtre Propriétés, et/ou la propriété Rows, trouvé dans la section Comportement, à une valeur supérieure à 1.