Mostra tutte le pagine del PrintDocument su PrintPreviewControl
-
18-09-2019 - |
Domanda
Ho problemi la creazione di più pagine in una PrintDocument e la loro visualizzazione all'interno di un PrintPreviewControl. Posso creare una singola pagina abbastanza facilmente, ma concatenare più pagine è me sfugge.
ho intenzione di fine disegnare diverse pagine di roba che utilizzano GDI, ma non riesco a ottenere qualcosa di simile a funzionare come previsto.
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'idea è che 3 pagine separate vengono create, e visualizzati all'interno del controllo PrintPreview. Che cosa mi manca?
Soluzione
Il frammento di codice ottenuto alterati esattamente al punto critico, in cui si assegna e.HasMorePages. C'è un problema lampante nel codice:. È necessario implementare un gestore di eventi BeginPrint per azzerare il contatore delle pagine di nuovo a 0
Altri suggerimenti
Non sono sicuro di come mostrare tutte le pagine per impostazione predefinita, ma è possibile mostrare più di una pagina nel PrintPreviewControl
impostando la proprietà Columns
, che si trova in Layout della proprietà della finestra, e / o la proprietà Rows
, che si trova in Comportamento sezione, per un valore superiore a 1.