检测PrintDocument何时成功打印(不仅仅是预览)

Pet*_*ete 11 .net c# printing winforms

我在我的应用程序中使用PrintDocument进行一些自定义打印.当我们的项目成功打印时,我需要记录.我最初通过以下方式实现了这一点:

 print_doc.EndPrint += (o,e) => printed_callback ();
Run Code Online (Sandbox Code Playgroud)

printed_callback打印完成后调用我的调用.但是,现在我正在添加预览支持,我PrintDocument将以完全相同的方式传递给PrintPreviewDialog.这样做会导致在EndPrint初始呈现预览所需的打印输出后调用事件.

因此,即使用户单击"预览"然后关闭预览,也会调用我们的日志记录代码.

有关如何区分真实打印输出和"预览打印"的任何建议?不幸的是,我不能只是因为用户可能会点击预览对话框中的"打印"按钮并触发打印输出EndPrintPrintDocument传递给PrintPreviewDialog用户.

Pet*_*ete 14

好的,所以我实际上设法自己弄清楚了,使用PrintDocument.PrintController属性,并检查IsPreview控制器的属性.我的最终编码最终如下:

doc.EndPrint += (o,e) =>
{
    if (doc.PrintController.IsPreview)
        return;

    print_callback ();
}
Run Code Online (Sandbox Code Playgroud)