我在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控件中显示。我错过了什么?
答案 0 :(得分:0)
您的代码段正好在关键点被严重破坏,您可以在其中分配e.HasMorePages。您的代码中存在一个明显的问题:您需要实现BeginPrint事件处理程序以将页面计数器重置为0.
答案 1 :(得分:0)
我不确定默认情况下如何显示所有页面,但您可以通过设置布局中的PrintPreviewControl
属性在Columns
中显示多个页面属性窗口的部分和/或行为部分中的Rows
属性,其值大于1。