Pergunta

Estou tendo problemas para criar várias páginas em uma PrintDocument e exibi-los dentro de um PrintPreviewControl. Eu posso criar uma única página com bastante facilidade, mas encadeamento de várias páginas é me iludindo.

Eu estou indo para, eventualmente, desenhar várias páginas de material usando GDI, mas não posso obter algo como isto a funcionar como esperado.

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

A idéia é que 3 páginas separadas são criadas, e exibido dentro do controle PrintPreview. O que eu estou ausente?

Foi útil?

Solução

O trecho de código foi mutilado exatamente no ponto crítico, onde você atribui e.HasMorePages. Há um problema gritante em seu código: você precisa implementar um manipulador de eventos BeginPrint para repor a página contador de volta para 0

.

Outras dicas

Eu não sei como mostrar todas as páginas por padrão, mas você pode mostrar mais de uma página no PrintPreviewControl, definindo a propriedade Columns, encontrada no Layout do propriedades janela, e / ou a propriedade Rows, encontrada no Comportamento seção, para um valor maior que 1.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top