Вопрос

У меня возникли проблемы с созданием нескольких страниц в 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.Что я упускаю из виду?

Это было полезно?

Решение

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top