Alle Seiten von Printdocument auf Printpreview
-
18-09-2019 - |
Frage
Ich habe Probleme, mehrere Seiten in einem Printdocument zu schaffen und sie in einem Printpreview anzeigt. Ich kann leicht genug, um eine einzelne Seite erstellen, aber zusammen mehr Seiten Bespannen ist mir eluding.
Ich werde schließlich mehrere Seiten von Sachen zeichnen GDI verwenden, aber ich kann nicht so etwas wie dieses erhalten wie erwartet funktionieren.
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 );
}
Die Idee ist, dass drei separate Seiten erstellt werden, und in dem Printpreview-Steuerelement angezeigt. Was bin ich?
Lösung
Ihr Code-Snippet wurde genau an dem kritischen Punkt verstümmelt, in dem Sie e.HasMorePages zuweisen. Es gibt ein eklatantes Problem in Ihrem Code. Sie Beginprint-Event-Handler implementieren müssen die Seitenzähler wieder auf 0 zurückgesetzt
Andere Tipps
Ich bin mir nicht sicher, wie alle Seiten standardmäßig zu zeigen, aber Sie können durch Einstellen der PrintPreviewControl
Eigenschaft, gefunden in dem Layout der in der Columns
mehr als eine Seite zeigen Eigenschaften Fenster und / oder die Rows
Eigenschaft, gefunden in dem Verhalten Abschnitt, auf einen Wert höher als 1 ist.