用C#打印的全局页眉和页脚(而不是多次复制和粘贴相同的信息)

时间:2014-02-10 10:01:40

标签: c# winforms visual-studio printing .net-3.5

在我的应用程序中,用户可以预览和打印文档 - 比如文档A,文档B和文档C,每个文档都显示相同的页眉和页脚。目前代码是复制的,但出于效率原因,我是否可以简单地创建另一种方法来保存一致的信息并简单地调用和创建文本和图像(或其他东西)?以下示例与我的应用程序类似:

private void Doc_A_Preview_Click(object sender, EventArgs e)
{
     PrintDocument Print_Document = new PrintDocument();
     Print_Document.PrintPage += new PrintPageEventHandler(Doc_A);
     PrintPreviewDialog Print_Preview = new PrintPreviewDialog();
     Print_Preview.Document = Print_Document;
     Print_Preview.ShowDialog(this);
}

private void Doc_A_Print_Click(object sender, EventArgs e)
{
      PrintDocument Print_Document = new PrintDocument();
      Print_Document.PrintPage += new PrintPageEventHandler(Doc_A);
      PrintDialog Print_Dialog = new PrintDialog();
      Print_Dialog.Document = Print_Document;
      Print_Dialog.ShowDialog(this);

      if (Print_Dialog.ShowDialog() == DialogResult.OK)
      {
          Print_Document.Print();
      }
}

我想也许为页眉/页脚创建一个方法,页面正文(所有页面都不同)会像下面这样有意义:

一致的页眉/页脚

private void HeaderFooter(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
    // Title
    // Info
    // Logo
    // Application name
    // Copyright
    // Current date and time
}

页面主体不一致

private void Doc_A(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
    // Doc A (heading)
    // Body text
    // Images
}

我知道前两种方法(Doc_A_Preview_Click和Doc_A_Print_Click)只调用Doc_A方法,它只显示正文和标题,我不知道如何调用页眉/页脚。

那么,如何将Doc_A和HeaderFooter合并在一起?

1 个答案:

答案 0 :(得分:0)

如果我理解问题,那么你就可以这样做

private void Doc_A(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
    Header(sender, e);
    // Body text
    // Images
    Footer(sender, e);
}