多页打印预览不工作

本文关键字:工作 打印 | 更新日期: 2023-09-27 17:51:15

我看过很多关于这个的帖子。我相信我在跟随他们,但仍然有一个问题。

我在c#中做这个,我运行的是Windows 8.1。

我正在将XML文件的内容打印出多页。我不只是循环遍历所有的元素,我对它们进行了自己的格式化。有足够多的元素,我最终会打印几页,但我被困在让第2页的内容显示在第2页。这就是我正在做的。

int pagePrinting;
private void butPrint_Click(object sender, EventArgs e)
{
    pagePrinting = 1;
    printDocument1.PrintPage += this.printDocument1_PrintPage;
    printPreviewDialog1.PrintPreviewControl.Document = printDocument1;
    printPreviewDialog1.Show();
    ((Form)printPreviewDialog1).WindowState = FormWindowState.Maximized;
}

private void printDocument1_PrintPage(System.Object sender, PrintPageEventArgs e)
{
    Point pnt = new Point(0, 0);
    switch (pagePrinting)
    {
        case 1:
            e.Graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
            e.Graphics.Clear(Color.White);
            printDocument1.DefaultPageSettings.Landscape = false;
            pnt.X = 300;
            e.Graphics.DrawString("Page 1 Header", fntArialHeader, Brushes.Black, pnt);
            // more printing on page 1 ...    
            pagePrinting++;
            e.HasMorePages = true;
            break;
        case 2:
            e.Graphics.DrawString("Page 2 Header", fntArialHeader, Brushes.Green, pnt);
            // More printing on page 2 ...
            e.HasMorePages = false;
            break;
    }
}

我认为在打印第1页结束时,我设置了e.s hasmorepages = true,然后退出并返回打印第2页。当我在打印预览中查看这个时,我在第1页上得到两个标题,这是唯一可用的页面。当我点击打印预览对话框中的打印按钮时,我只打印了第2页。

多页打印预览不工作

我不会在每次点击打印按钮时都添加PrintPage事件处理程序:

因此注释掉这一行,或者将其移动到表单的构造函数中,这样它只连接一次:

printDocument1.PrintPage += this.printDocument1_PrintPage;