DOBON.NET

ページ設定ダイアログを表示して印刷する

下図のようなページ設定ダイアログを表示してから、印刷する方法を紹介します。

ページ設定ダイアログを表示するには、PageSetupDialogクラスを用います。この時、PageSetupDialog.Documentプロパティに印刷で使用するPrintDocumentオブジェクトを指定します。

ここではその例として、「印刷する」で紹介したサンプルに手を加え、ページ設定ダイアログを表示してから印刷するようにしています。

VB.NET
コードを隠すコードを選択
'Imports System.Windows.Forms
'Imports System.Drawing

'Button1のClickイベントハンドラ
Private Sub Button1_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Button1.Click
    'PrintDocumentオブジェクトの作成
    Dim pd As New System.Drawing.Printing.PrintDocument
    'PrintPageイベントハンドラの追加
    AddHandler pd.PrintPage, AddressOf pd_PrintPage

    'PageSetupDialogクラスの作成
    Dim psd As New PageSetupDialog
    'PrintDocumentを指定
    psd.Document = pd
    'ページ設定ダイアログを表示する
    If psd.ShowDialog() = DialogResult.OK Then
        'OKがクリックされた時は印刷する
        pd.Print()
    End If
End Sub

Private Sub pd_PrintPage(ByVal sender As Object, _
        ByVal e As System.Drawing.Printing.PrintPageEventArgs)
    '画像を読み込む
    Dim img As Image = Image.FromFile("test.bmp")
    '画像を描画する
    e.Graphics.DrawImage(img, e.MarginBounds)
    '次のページがないことを通知する
    e.HasMorePages = False
    '後始末をする
    img.Dispose()
End Sub
C#
コードを隠すコードを選択
//using System.Windows.Forms;
//using System.Drawing;

//Button1のClickイベントハンドラ
private void Button1_Click(object sender, System.EventArgs e)
{
    //PrintDocumentオブジェクトの作成
    System.Drawing.Printing.PrintDocument pd =
        new System.Drawing.Printing.PrintDocument();
    //PrintPageイベントハンドラの追加
    pd.PrintPage +=
        new System.Drawing.Printing.PrintPageEventHandler(pd_PrintPage);

    //PageSetupDialogクラスの作成
    PageSetupDialog psd = new PageSetupDialog();
    //PrintDocumentを指定
    psd.Document = pd;
    //ページ設定ダイアログを表示する
    if (psd.ShowDialog() == DialogResult.OK)
    {
        //OKがクリックされた時は印刷する
        pd.Print();
    }
}

private void pd_PrintPage(object sender,
    System.Drawing.Printing.PrintPageEventArgs e)
{
    //画像を読み込む
    Image img = Image.FromFile("test.bmp");
    //画像を描画する
    e.Graphics.DrawImage(img, e.MarginBounds);
    //次のページがないことを通知する
    e.HasMorePages = false;
    //後始末をする
    img.Dispose();
}

ここではPageSetupDialogオブジェクトを自分で作成しましたが、Visual StudioのフォームデザイナでPageSetupDialogコンポーネントをフォームに追加して利用する方法もあります。この方法についてはヘルプの「PageSetupDialog コンポーネント (Windows フォーム)」をご覧ください。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • このサイトで紹介されているコードの多くは、例外処理が省略されています。例外処理については、こちらをご覧ください。
  • イベントハンドラの意味が分からない、C#のコードをそのまま書いても動かないという方は、こちらをご覧ください。
  • コードの先頭に記述されている「Imports ??? がソースファイルの一番上に書かれているものとする」(C#では、「using ???; がソースファイルの一番上に書かれているものとする」)の意味が分からないという方は、こちらをご覧ください。
  • .NET Tipsをご利用いただく際は、注意事項をお守りください。
共有する

この記事への評価

この記事へのコメント

この記事に関するコメントを投稿するには、下のボタンをクリックしてください。投稿フォームへ移動します。通常のご質問、ご意見等は掲示板へご投稿ください。