C# 如何在PrintPage处理程序中实现PrintRange.Selection?

C# 如何在PrintPage处理程序中实现PrintRange.Selection?,c#,.net,printing,range,C#,.net,Printing,Range,我正试图完全按照代码设置打印作业。我有自己的PrintPage和QueryPage处理程序,一切都很好。但现在,我仍然坚持使用PrinterSettings类的PageRange属性 对于属性值“PrintRange.Selection”,文档中说 如果PrintRange是PrintRange.Selection,则仅为所选页面指定输出 但是找不到这样做的方法。只需不为未选择的页面绘制任何内容,仍然会打印空页面。设置“取消”将停止整个打印作业。那么,如何将未选择的页面省略掉呢?如果您创建了多页

我正试图完全按照代码设置打印作业。我有自己的PrintPage和QueryPage处理程序,一切都很好。但现在,我仍然坚持使用PrinterSettings类的PageRange属性

对于属性值“PrintRange.Selection”,文档中说

如果PrintRange是PrintRange.Selection,则仅为所选页面指定输出


但是找不到这样做的方法。只需不为未选择的页面绘制任何内容,仍然会打印空页面。设置“取消”将停止整个打印作业。那么,如何将未选择的页面省略掉呢?

如果您创建了多页文档,那么您的代码中应该已经有了页面计数器。在BeginPrint事件处理程序中将其设置为零,并在PrintPage事件处理程序中将其递增。并使用该值计算需要打印的页面。如果尚未完成,请将e.HasMorePages设置为true

该策略使PrintRange的实现变得简单。只需将BeginPrint事件中的页码设置为起始页-1,而不是0。并避免在打印范围内的最后一页时将e.HasMorePages设置为true