「印刷プレビュー」ダイアログボックスを表示する - C#

「印刷プレビュー」ダイアログボックスを表示するコードを紹介します。

UI

下図のUIを作成します。PrintPreviewDialog, Buttonを配置します。


PrintPreviewDialogは[ツールボックス]の[印刷]カテゴリの中にあります。


コード

以下のコードを記述します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Printing;

namespace PrintPreview
{
  public partial class FormMain : Form
  {
    public FormMain()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      PrintDocument pd = new PrintDocument();
      pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);

      printPreviewDialog1.Document = pd;
      DialogResult dr = printPreviewDialog1.ShowDialog();

    }

    private void pd_PrintPage(object sender, PrintPageEventArgs e)
    {
      Font f = new Font("メイリオ", 40f);
      Brush b = new SolidBrush(Color.Black);
      e.Graphics.DrawString("Penguin", f, b, new PointF(10, 10));
    }
  }
}

解説

PrintDocument pd = new PrintDocument();
印刷用ドキュメントのPrintDocumentを作成します。

pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
印刷の際にはPrintPageイベントが呼び出されます。PrintPageイベントのイベントハンドラーを作成します。印刷のロジックはPrintPageイベントに記述します。

printPreviewDialog1.Document = pd;
DialogResult dr = printPreviewDialog1.ShowDialog();
printPrevireDialogのDocumentプロパティにプレビュー表示する印刷ドキュメントを設定します。設定後、PrintPreviewDialogのShowDialog()メソッドを呼び出し、[印刷プレビュー]ダイアログを表示します。

PrintPage イベントハンドラ
private void pd_PrintPage(object sender, PrintPageEventArgs e)
{
  Font f = new Font("メイリオ", 40f);
  Brush b = new SolidBrush(Color.Black);
  e.Graphics.DrawString("Penguin", f, b, new PointF(10, 10));
}
にて印刷処理を実装します。描画に使用するフォント、ブラシを準備し、DrawStringメソッドを用いて文字列を印刷します。

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。


button1をクリックします。印刷プレビューダイアログが表示されます。印刷結果のプレビューがダイアログに表示されていることを確認できます。


印刷プレビューダイアログのツールバーの左端のプリンタのアイコンをクリックすると印刷できます。


Adobe PDFで印刷した結果です。


著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2012-05-29
iPentec all rights reserverd.