我正在编写一个使用Visual Studio 2008 / C#打印格式化数据的应用程序。我已经按照我希望它显示的方式格式化数据。我使用两个打印文档和事件处理程序,因为报告的第一页带有与第2页到第N页不同的格式要求。
“打印预览”显示我尝试打印的所有页面的格式正确的数据。然而,第2页到第N页实际上不会打印。
我已经完成了我的代码,数据正在正确传递给事件处理程序。这是调用第二个打印文档的事件处理程序的代码块。我做错了什么?
// First page print limit has been reached. Do we
// still have unprinted items in the arraylist? Call the second
// print handler event and print those items.
if (((alItemsToPrint.Count) - iItemPrintedCount) > 0)
{
// Getting a look at my formating
PrintPreviewDialog printPreview2 = new PrintPreviewDialog();
printPreview2.Document = ItemsPrintDocument;
printPreview2.ShowDialog();
printPreview2.Dispose();
// Print item overflow pages
ItemsPrintDocument.Print();
// Release the resources consumed by this print document
ItemsPrintDocument.Dispose();
}
感谢您的时间,大家。
答案 0 :(得分:1)
要打印文档,请使用:
PrintDocument.Print
预览时,将PrintDocument分配给PrintPreviewDialog
printPreview2.Document = ItemsPrintDocument;
当您显示PrintPreviewDialog时,它会将PrintDocument的PrintController替换为PreviewPrintController并调用PrintDocument.Print。
此操作会在每个页面上生成一个图像列表(图元文件)。
接下来,它恢复PrintDocument上的原始PrintController并显示图像。
当您在PrintPreviewDialog上按PrintButton时,它会使用原始PrintController调用PrintDocument.Print。
请注意,对于正确的行为,您可以使用BeginPrint的PrintDocument事件将vars初始化为新的PrintDocument.Print。
如果您使用PrintPreviewDialog,则不需要调用PrintDocument.Print。