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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top