C#打印多页

C#打印多页,c#,printing,C#,Printing,这是我的代码,当我打印一页时效果很好,但是当我尝试打印不适合一页的内容时,它不会启动新页,它只接受偏移量更改并开始在第一页上写入 有人知道该怎么做吗 private void printDocument_PrintPage(object sender, PrintPageEventArgs e) { Graphics graphic = e.Graphics; Font font = new Font("Courier New", 12); float fontHeig

这是我的代码,当我打印一页时效果很好,但是当我尝试打印不适合一页的内容时,它不会启动新页,它只接受偏移量更改并开始在第一页上写入

有人知道该怎么做吗

private void printDocument_PrintPage(object sender, PrintPageEventArgs e)
{
    Graphics graphic = e.Graphics;

    Font font = new Font("Courier New", 12);
    float fontHeight = font.GetHeight();
    int startX = 10;
    int startY = 10;
    int offset = 0;

    float pageWidth = e.PageSettings.PrintableArea.Width;
    float pageHeight = e.PageSettings.PrintableArea.Height;

    foreach (string line in textRichTextBox.Lines)
    {
        graphic.DrawString(line, font, new SolidBrush(Color.Black), startX, startY + offset);
        offset += (int)fontHeight;// + 5

        if (offset >= pageHeight - (int)fontHeight)
        {
            e.HasMorePages = true;
            offset = 0;
        }
    }
    e.HasMorePages = false;
}

您使用的API错误,:

在PrintPage事件处理程序中,使用 PrintPageEventArgs类和要计算行的文档内容 每页的长度和行数。绘制完每页后,检查是否 它是最后一页,并设置的HasMorePages属性 PrintPageEventArgs将相应地显示。PrintPage事件将一直引发到 HasMorePages是假的。另外,请确保PrintPage事件是 与其事件处理方法关联


您不能在循环中设置
HasMorePages
,只能在回调退出时设置。将调用回调,直到您将
HasMorePages
设置为false

您使用的API错误,:

在PrintPage事件处理程序中,使用 PrintPageEventArgs类和要计算行的文档内容 每页的长度和行数。绘制完每页后,检查是否 它是最后一页,并设置的HasMorePages属性 PrintPageEventArgs将相应地显示。PrintPage事件将一直引发到 HasMorePages是假的。另外,请确保PrintPage事件是 与其事件处理方法关联


您不能在循环中设置
HasMorePages
,只能在回调退出时设置。回调将被调用,直到您将HasMorePages设置为false

您需要在到达页面末尾后停止向打印机发送文本,仅将HasMorePages设置为true是不够的。您可以在此处添加一个,也可以完全更改循环,并将列表中最后处理的位置保留在某个位置。

一旦到达页面末尾,您需要停止向打印机发送文本,仅将HasMorePages设置为true是不够的。您可以在此处添加一个字符串,也可以完全更改循环,并将列表中最后处理的位置保留在某个位置。

因此,我做了一个中断语句,保存了其他字符串以供下次打印,现在如何继续下一次打印?另一个pD.PrintPage+=新的PrintPageEventHandler(printDocument\u PrintPage);我做了一个中断语句,保存了其他字符串以便下次打印,现在如何继续下一次打印?另一个pD.PrintPage+=新的PrintPageEventHandler(printDocument\u PrintPage);不起作用