我試圖打印發票。發票應該能夠打印在多個頁面上,但這就是問題發生的地方。我可以在單個頁面上完美打印發票,但只要發票不適合單個頁面,printjob就會退出第一頁。使用PrintDocument打印多個頁面
這是我正在使用的代碼。 'artikelen'是文章列表(List)。我已經閱讀了幾個類似的例子,我很確定我在這裏錯過了一些東西。
(編輯:刪除了一些unneccesary代碼)
public void PrintA4Factuur()
{
p = new PrintDocument();
p.PrintPage +=
new PrintPageEventHandler(printPage);
printPreviewDialog.Document = p;
printPreviewDialog.ShowDialog();
}
void printPage(object sender1, PrintPageEventArgs e1)
{
Graphics g = e1.Graphics;
int yPos = 320;
float pageHeight = e1.MarginBounds.Height;
int artikelPosition = 0;
while (yPos + 100 < pageHeight
&& artikelPosition < this.artikelen.Count)
{
// Do stuff with articles (printing details in different rectangles
artikelPosition += 1;
yPos += 20;
}
if (artikelPosition < this.artikelen.Count)
{
e1.HasMorePages = true;
return;
}
else
{
e1.HasMorePages = false;
}
}
這樣做。這是拍我自己的好時機。非常感謝!回顧一下,每頁都會調用printPage()方法,而不是每個打印作業,對吧?這將解釋我的錯誤。 – Stefan 2012-04-19 17:28:53
@StefanM的確如此。這就是爲什麼將yPos保留在'printPage'方法中的原因,因爲這是打印行的起點。 – LarsTech 2012-04-19 17:32:18