我试图打印发票。发票应该能够打印在多个页面上,但这就是问题发生的地方。我可以在单个页面上完美打印发票,但只要发票不适合单个页面,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