我正在使用 PrintDocument 进行一些自定义打印在我的申请中。当我们的项目成功打印时,我需要记录。我最初是通过以下方式实现的:
print_doc.EndPrint += (o,e) => printed_callback ();
让我的 printed_callback
在打印完成时被调用。但是,既然我添加了预览支持,我将以完全相同的方式构造的 PrintDocument
传递到 PrintPreviewDialog 中。 .这样做会导致在初始呈现预览所需的打印输出后调用 EndPrint
事件。
因此,即使用户点击“预览”然后关闭预览,我们的日志记录代码也会被调用。
关于如何区分真实打印输出和“预览打印”的任何建议?不幸的是,对于传递给 PrintPreviewDialog
的 PrintDocument
,我不能不连接到 EndPrint
,因为用户可能会单击“打印”按钮在预览对话框中并触发打印输出。
最佳答案
好的,所以我实际上设法自己解决了这个问题,使用 PrintDocument.PrintController属性,并检查 Controller 的 IsPreview
属性。我的最终编码如下:
doc.EndPrint += (o,e) =>
{
if (doc.PrintController.IsPreview)
return;
print_callback ();
}
关于c# - 检测 PrintDocument 何时成功打印(不仅仅是预览),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6270546/