Показать все страницы PrintDocument в PrintPreviewControl
-
18-09-2019 - |
Вопрос
У меня возникли проблемы с созданием нескольких страниц в 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.