繁体   English   中英

Hasmorepages PrintPageEventArgs属性到底能做什么?

[英]What does Hasmorepages PrintPageEventArgs property do exactly?

我试图了解Hasmorepages PrintPageEventArgs属性是什么,为什么要使用它以及它如何工作。

MSDN Library并没有很好的解释。 他们只说如果将其设置为true,则将再次调用printpage事件。 这是否意味着事件在其自身上循环而没有离开或离开,然后再次调用自身或依靠您再次调用printpage事件?

我只是想了解PrintPageEventArgs.hasmorepages属性。 任何提示或帮助将不胜感激。

谢谢,

它不是PrintDocument的属性,而是PrintPageEventArgs的属性。 其实例将传递到您的PrintPage事件处理程序。

Windows中实现打印的方式严重影响PrintController和PrintDocument类的工作方式。 核心实现细节是基于页面的 打印机驱动程序一次处理一页,底层的winapi函数是StartPage()。 呈现给打印设备上下文的所有内容最终都在一页上。 然后,EndPage()winapi函数完成页面并将其提交到后台打印程序。

可能有助于绘制打印3页文档时的调用图:

StartDoc()
    PrintDocument.BeginPrint event
    StartPage()
       PrintDocument.PrintPage event, e.HasMorePages = true
    EndPage()
    StartPage()
       PrintDocument.PrintPage event, e.HasMorePages = true
    EndPage()
    StartPage()
       PrintDocument.PrintPage event, e.HasMorePages = false
    EndPage()
    PrintDocument.EndPrint event
EndDoc()

现在应该清楚了,通过分配e.HasMorePage = true,可以让PrintController继续触发PrintPage事件。 由您来分页文档并在PrintPage事件处理程序中呈现正确页面的内容。 您将需要BeginPrint事件,例如,将内部页面计数器设置为0。

HasMorePages是您作为事件参数收到的PrintPageEventArgs的布尔属性。 如果要打印更多页面,则在打印当前页面后将其设置为True如果当前页面为最后一页,则将其设置为False

事件总是由框架中的某些东西为您调用的,决不应该由您直接调用。 它们是事件 ,这意味着它们被派遣来告诉您某些事情已经发生,并为您提供了做出回应或做出反应的机会。

如果将其设置为True ,则会自动再次调用PrintPage事件。 你自己不称呼它。 (这正是MSDN文档所说的:如果将其设置为true,则将再次调用 printpage事件。它并不表示您需要再次调用它 -它会再次 调用 。)

ev.HasMorePages := DoYouHaveMorePagesToPrint;

有关该事件的VB.NET示例以及如何使用ev.HasMorePages ,请参见PrintDocumentMSDN文档 有关PrintPageEventArgs信息,请参见此MSDN页面 ,该页面具有指向PrintPageEventArgs成员 (包括HasMorePages )的链接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM