【问题标题】:Printing multiple pages of different data打印多页不同的数据
【发布时间】:2009-01-13 16:10:54
【问题描述】:

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

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

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

你会怎么做?

【问题讨论】:

    标签: .net printing


    【解决方案1】:

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

    我想你会想要制作一个像 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;
            }
        }
    }
    

    【讨论】:

    • 我喜欢你的方法......今晚我会试一试......然后告诉你。因为我有一个相当大的产品,所以这样的改变需要时间。谢谢
    • 它工作得非常好......超过一页的内部表格与只有一页的表格一起打印......这正是我需要的。现在我只需要对一些打印超过报告的表单进行一些修改,但这会调整您的代码。再次感谢
    猜你喜欢
    • 1970-01-01
    • 2011-10-28
    • 1970-01-01
    • 1970-01-01
    • 2015-05-07
    • 1970-01-01
    • 2017-01-08
    • 1970-01-01
    • 2021-04-03
    相关资源
    最近更新 更多