2

我在 PrintDocument 中创建多个页面并在 PrintPreviewControl 中显示它们时遇到问题。我可以很容易地创建一个页面,但是将多个页面串在一起却让我望而却步。

我最终将使用 GDI 绘制几页内容,但我无法让这样的东西按预期工作。

private PrintDocument doc = new PrintDocument();
private string[] printMe = new string[]{ "page1", "page2", "page3" );
private int pageCount = 0;

private void FormLoad(object sender, EventArgs e)
{
 doc.PrintPage += new PrintPageEventHandler(PrintPage);
 PrintPreviewControl.Document = doc;
}

private void doc_BeginPrint(object sender, PrintEventArgs e){ pageCount = 0; }

private void PrintPage(object sender, PrintPageEventArgs e)
{
 Graphics g = e.Graphics;
 g.DrawString(drawMe[pageCount++], "Lucida Console", Brushes.Black, new Point(20,20));

 e.HasMorePages = (pageCount  printMe.Length );
}

这个想法是创建 3 个单独的页面,并在 PrintPreview 控件中显示。我错过了什么?

4

2 回答 2

0

您的代码片段恰好在您分配 e.HasMorePages 的关键点处被破坏。您的代码中有一个明显的问题:您需要实现一个 BeginPrint 事件处理程序以将页面计数器重置回 0。

于 2010-02-04T17:14:11.243 回答
0

PrintPreviewControl我不确定默认情况下如何显示所有页面,但您可以通过设置属性Columns窗口的布局部分中的属性和/或行为部分中的属性来显示多个页面,为大于 1 的值。Rows

于 2018-01-06T21:39:01.613 回答