0

我尝试了下面的代码,

Private void button1_click(object sender, EvenArgs e)
{
      PrintDoument pd = new PrintDoument();
      pd.PrintPage += new PrintPageEventHandler(this.printDocument_PrintPage1);
      pd.Print();
}

Private void printDocument_PrintPage1(object sender, system.Drawing.Printing.PrintPageEventArgs e)
{
      e.Graphics.DrawString("Test 1",new Font("Arial",8,FontStyle.Regular), Brushes.Black,50,500);
      e.Graphics.DrawString("Test 2",new Font("Arial",8,FontStyle.Regular), Brushes.Black,50,1000);
      e.HasMorePages = true;

      e.Graphics.DrawString("Test 3",new Font("Arial",8,FontStyle.Regular), Brushes.Black,50,2000);
      e.HasMorePages = false;
}

我想在下一页打印“Test 3”字符串,但它只打印一页。请告诉我一个方法来做到这一点。

4

1 回答 1

0

这里的根本问题是您的 PrintPage1 方法。这是不允许的。

你只需要一个 PrintPage 方法。它将被调用以打印第一页并将继续被调用,直到它返回 E.HasMorePages = false; 在每次调用之间,打印引擎将负责实际打印页面并为您提供一个新页面供您绘制。

此外,与您的问题无关:您在此处泄漏 Font 对象。它们有非托管资源,您必须处理它们。开始打印时创建它们,完成后丢弃它们。

于 2018-05-03T21:04:20.300 回答