Показать все страницы PrintDocument на PrintPreviewControl - PullRequest
2 голосов
/ 04 февраля 2010

У меня проблемы с созданием нескольких страниц в PrintDocument и отображением их в PrintPreviewControl. Я могу достаточно легко создать одну страницу, но объединение нескольких страниц ускользает от меня.

Я собираюсь в конечном итоге нарисовать несколько страниц с использованием GDI, но я не могу заставить что-то подобное работать так, как ожидалось.

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

Идея состоит в том, что 3 отдельные страницы создаются и отображаются в элементе управления PrintPreview. Чего мне не хватает?

Ответы [ 2 ]

0 голосов
/ 07 января 2018

Я не уверен, как показать все страницы по умолчанию, но вы можете показать более одной страницы в PrintPreviewControl, установив свойство Columns, которое находится в разделе Макет Свойства окна и / или свойства Rows, найденные в разделе Поведение , до значения выше 1.

0 голосов
/ 04 февраля 2010

Ваш фрагмент кода был поврежден именно в критической точке, где вы назначаете e.HasMorePages. В вашем коде есть одна вопиющая проблема: вам нужно реализовать обработчик событий BeginPrint, чтобы сбросить счетчик страниц до 0.

...