从'PrintDocument`调用`PrintEventArgs`中的'Cancel`应该怎么想?

时间:2010-05-11 13:45:33

标签: .net

我不得不修改应用程序中的打印功能,以便不打印某些特定页面。我发现不需要大量修改的唯一方法是回收页面(我只知道在“打印”之后是否需要跳过页面,所以我清除了这个页面,我再次使用它进行下一次)。问题是当我需要回收的页面是最后一个我最终得到一个我没用的空白页面时。我在这一点上做的聪明伎俩是在Cancel上调用PrintEventArgs,这实际上似乎只取消了最后一页。是否保证始终如此,或者在某些特定情况下我冒着取消超过最后一页的风险(例如:慢速假脱机程序)?我没有任何其他修复方法。

1 个答案:

答案 0 :(得分:1)

是的,这应该是一个问题。在PrintPage事件中将e.Cancel设置为true会导致调用AbortDoc()。来自SDK文档:

如果使用Print Manager启动打印作业,则调用AbortDoc会删除整个假脱机作业,以便打印机不会收到任何内容。如果未使用打印管理器启动打印作业,则数据可能已经发送到打印机。在这种情况下,打印机驱动程序将重置打印机(如果可能)并结束打印作业。

实际上并不确定“打印管理器”是什么。在superuser.com上询问