打印多页不同的数据

时间:2009-01-13 16:10:55

标签: .net printing

在我的应用程序中,我有几种打印特定数据的表单。为了完成我使用PrintDocument PrintPage事件。

如果一个报告有超过1个页面,我将hasMorePages标志设置为true,并再次触发该事件,并且我有责任从最后一页末尾的位置继续打印。

现在,我需要在一个PrintDocument中打印所有这些报告,并且我想重用每个报告的代码,以便在一个打印按钮中用户将打印所有报告。这个想法是不打印几个文件。

你的做法是什么?

1 个答案:

答案 0 :(得分:2)

虽然我不太喜欢它的感觉,但显而易见的解决方案是制作一个打印事件,它是其他打印事件的聚合器。您可以挂钩文档打印事件,对于需要打印的每个项目,您可以手动触发其打印事件。

我想你会想要创建一个像IPrintableForm这样的接口,它有一个方法DoPrintEvent(object sender,PrintPageEventArgs args);

然后您的聚合器获取一堆需要打印并将其存储在实例变量中的表单,并执行以下操作:

private multiDocPageEventHandler(object sender, PrintPageEventArgs args)
{
    if (printStack == null) { // all done
        throw new Exception("This should never happen.");
    }
    else { // send to top of stack
        printStack.Peek().DoPrintEvent(sender, args);
        if (!args.HasMorePages) {
             printStack.Pop();
        }
        args.HasMorePages = printStack.Count > 0;
        if (!args.HasMorePages) {
            printStack = null;
        }
    }
}