以下のコードでプレビューを印刷しようとすると、以前に印刷されたアイテムの上にアイテムが印刷されます。if
ブロックをループの外に置くとfor
、無限ページが生成され始めます。
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
SolidBrush brush = new SolidBrush(Color.Black);
Font font = new Font("Courier New", 12);
float fontHeight = font.GetHeight();
int startX = 40;
int startY = 30;
int lineperpage = 0;
for (int i = 0; i < 100; i++)
{
e.Graphics.DrawString("Line: " + i, font, brush, startX, startY);
startY += font.Height;
lineperpage++;
if (lineperpage > 50)
{
e.HasMorePages = true;
startY = 30;
lineperpage = 0;
startX = 300;
}
else
{
e.HasMorePages = false;
}
}
}