【问题标题】:Print forms across multiple pages跨多个页面打印表单
【发布时间】:2011-07-21 14:27:00
【问题描述】:

我有 3 种打印方法:printa、printb 和 printc(每种打印一个表格)。所有 3 个表格都需要跨多个页面打印。如何打印 3 页?

我知道我们需要使用事件处理程序并使用 currentpage 和 e.hasmorepages 但我不知道如何使用它。

【问题讨论】:

    标签: c# winforms printing


    【解决方案1】:

    只需跟踪页码。您在 BeginPrint 事件中将其设置为 0,并在每次调用 PrintPage 时将其递增。像这样:

        int pageNumber;
    
        private void printDocument1_BeginPrint(object sender, System.Drawing.Printing.PrintEventArgs e) {
            pageNumber = 0;
        }
    
        private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) {
            ++pageNumber;
            e.HasMorePages = true;
            switch (pageNumber) {
                case 1: printa(e); break;
                case 2: printb(e); break;
                case 3: printc(e); e.HasMorePages = false; break;
            }
        }
    

    【讨论】:

      【解决方案2】:

      是的,它可能非常晦涩。以下是我为 printing Reporting Services 报告(下面代码中的 MetaFile 图像数组)所做的。

      public void Print()
      {
          if (emfImage == null || emfImage.Count <= 0)
          {
              throw new ArgumentException("An image is required to print.");
          }
      
          printer = printer.Trim();
          if (string.IsNullOrEmpty(printer))
          {
              throw new ArgumentException("A printer is required.");
          }
      
          printingPage = 0;
          PrintDocument pd = new PrintDocument();
          pd.PrinterSettings.PrinterName = printer;
          pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
          pd.Print();
      }
      
      private void pd_PrintPage(object sender, PrintPageEventArgs e)
      {
          Metafile page = emfImage[printingPage];
          e.Graphics.DrawImage(page, 0, 0, page.Width, page.Height);
      
          e.HasMorePages = ++printingPage < emfImage.Count;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-05-08
        • 1970-01-01
        • 2011-06-11
        • 1970-01-01
        • 1970-01-01
        • 2011-10-09
        • 1970-01-01
        相关资源
        最近更新 更多