在PrintPreviewControl上显示PrintDocument的所有页面

时间:2010-02-04 16:04:14

标签: c# winforms printing printdocument

我在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控件中显示。我错过了什么?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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