私は請求書を印刷しようとしています。請求書は複数のページに印刷できるはずですが、問題が発生する場所です。私は1ページに請求書を完全に印刷できますが、請求書が1ページに収まらなくなるとすぐに印刷ジョブが終了します最初のページ。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
@StefanMまさに。だから、yPosを 'printPage'メソッドに残しておくのは、それがあなたの行を印刷するための出発点であるからです。 – LarsTech