Pregunta

Estoy teniendo problemas para crear varias páginas en un PrintDocument y mostrarlos en un PrintPreviewControl. Puedo crear una sola página con bastante facilidad, pero encadenar varias páginas soy yo eludir.

Voy a dibujar con el tiempo varias páginas de actividades que utilizan GDI, pero no puedo conseguir algo como esto funcione como se espera.

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 );
}

La idea es que se crean 3 páginas separadas, y se muestran en el control de PrintPreview. ¿Qué me falta?

¿Fue útil?

Solución

Su fragmento de código quedó destrozado exactamente en el punto crítico, donde se asignan e.HasMorePages. Hay un problema evidente en el código:. Es necesario implementar un controlador de eventos BeginPrint para restablecer el contador de páginas de nuevo a 0

Otros consejos

No estoy seguro de cómo mostrar todas las páginas por defecto, pero se puede mostrar más de una página en el PrintPreviewControl estableciendo la propiedad Columns, que se encuentra en el Diseño del propiedades ventana, y / o la propiedad Rows, que se encuentra en el Comportamiento sección, a un valor mayor que 1.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top