2

以下のコードでプレビューを印刷しようとすると、以前に印刷されたアイテムの上にアイテムが印刷されます。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;
        }
    } 
}
4

1 に答える 1