Как использовать объект printdocument и предварительный просмотр для печати многостраничного отчета
Существует масса решений о том, как обрабатывать печать нескольких страниц, когда не хватает места для печати на одной странице. Однако я не могу найти решение, где можно распечатать многостраничный отчет с предварительным просмотром печати. Дело не в том, что моя информация не подходит, она идеально подходит, поскольку я использую один и тот же код для печати одной страницы. Только без цикла For-Next.
Может ли кто-нибудь показать мне, как использовать предварительный просмотр печати с многостраничным отчетом? Каждая страница точно такая же, просто на ней другая информация.
Что я уже пробовал:
Вот мой код:
void printButton_Click(object sender, EventArgs e) { printDocument1.DefaultPageSettings.Margins = new System.Drawing.Printing.Margins(500, 500, 500, 500); printDialogPreview.Document = printDocument1; printDialogPreview.Document.DocumentName = MainForm._fileName; if (printDialogPreview.ShowDialog() == DialogResult.OK) { //printDocument1.PrinterSettings = printDialogPreview.PrinterSettings; printDocument1.Print(); } } private void CapturePrintPanel(Control pnl) { Graphics myGraphics = pnl.CreateGraphics(); memoryImage = new Bitmap(pnl.Width, pnl.Height); Rectangle rect = new Rectangle(0, 0, pnl.Width, pnl.Height); pnl.DrawToBitmap(memoryImage, new Rectangle(0, 0, pnl.Width, pnl.Height)); } private void printDocument1_PrintPage(System.Object sender, System.Drawing.Printing.PrintPageEventArgs e) { for (int i = 0; i < Readings.Count; i++) { pP = new PrintPreview(Readings[i]); pP.Show(); CapturePrintPanel(pP.Controls["printPanel"]); e.Graphics.DrawImage(memoryImage, 0, 0); pP.Close(); pP.Dispose(); if((i + 1) < Readings.Count) { e.HasMorePages = i < Readings.Count; } } e.HasMorePages = false; }