它不是的PrintDocument的屬性,它是PrintPageEventArgs的屬性。其中的一個實例被傳遞給您的PrintPage事件處理程序。
的方式PrintController和PrintDocument的類工作嚴重影響的方式打印在Windows系統上實現。核心實現細節是基於頁面的。打印機驅動程序一次處理一頁,底層的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.
Opps!我的意思是說printpageeventargs不是printdocument。 – ThN 2012-07-18 17:44:49
這就是它應該如何在理論上工作。顯然,在C#或Delphi Prism中。似乎沒有BeginDoc或StartDoc方法,雖然有您指出的BeginPrint和EndPrint。 – ThN 2012-07-18 19:59:44
感嘆,他們是潛在的winapi電話,正如答案中指出的那樣。 – 2012-07-18 20:35:42