0

我正在编写一个应用程序来使用 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();
        } 

谢谢大家的时间。

4

1 回答 1

1

要打印文档,请使用:

PrintDocument.Print

预览时,您将 PrintDocument 分配给 PrintPreviewDialog

printPreview2.Document = ItemsPrintDocument;

当您显示 PrintPreviewDialog 时,它将 PrintDocument 的 PrintController 替换为 PreviewPrintController 并调用 PrintDocument.Print。

此操作会在每一页上生成一个图像(元文件)列表。

接下来,它恢复 PrintDocument 上的原始 PrintController 并显示图像。

当您按下 PrintPreviewDialog 上的 PrintButton 时,它会使用原始 PrintController 调用 PrintDocument.Print。

请注意,为了获得正确的行为,您可以使用 BeginPrint 的 PrintDocument 事件将 var 初始化为新的 PrintDocument.Print。

如果您使用 PrintPreviewDialog,则不需要调用 PrintDocument.Print。

于 2010-06-29T06:09:53.973 回答