代码之家  ›  专栏  ›  技术社区  ›  Simon T.

从“printdocument”调用“printeventargs”上的“cancel”应该得到什么?

  •  0
  • Simon T.  · 技术社区  · 14 年前

    为了不打印某些特定的页面,我必须修改应用程序中的打印功能。我发现不需要大量修改的唯一方法是回收页面(我只知道在“打印”页面后是否需要跳过该页面,所以我清除了该页面,然后在下一页中再次使用它)。问题是,当我需要回收的页面是最后一个我没有用的空白页面时。我在那一点上的聪明诀窍是打电话 Cancel PrintEventArgs 这实际上似乎只取消了最后一页。在某些特定情况下(例如:慢后台打印程序),是否总是这样保证,或者我会冒着取消超过最后一页的风险?我没有其他的办法。

    1 回复  |  直到 14 年前
        1
  •  1
  •   Hans Passant    14 年前

    是的,这应该是个问题。在printpage事件中将e.cancel设置为true会导致调用abortDoc()。从SDK文档:

    如果使用“打印管理器”启动打印作业,则调用abortDoc将擦除整个假脱机作业,这样打印机就不会收到任何内容。如果打印管理器不用于启动打印作业,则数据可能已发送到打印机。在这种情况下,打印机驱动程序将重置打印机(如果可能)并结束打印作业。

    实际上不知道“打印管理器”是什么。在superuser.com上提问