PrintDialog コンポーネントの概要 (Windows フォーム .NET)

Windows フォームでの印刷は、PrintDocument コンポーネントを使ってユーザーが印刷できるようにすることで構成されます。 PrintPreviewDialog コントロール、PrintDialogPageSetupDialog のコンポーネントを使って、Windows オペレーティング システム ユーザーが使い慣れたグラフィカル インターフェイスを提供します。

PrintDialog コンポーネントは構成済みのダイアログ ボックスであり、Windows ベースのアプリケーションのプリンターの選択、印刷するページの選択、その他の印刷関連の設定の確認に使います。 独自のダイアログ ボックスを構成するのではなく、プリンターと印刷関連の設定用の簡単なソリューションです。 ユーザーが自分のドキュメントのさまざまな部分 (すべての印刷、選択したページ範囲の印刷、または選択部分の印刷) を印刷できるようにすることが可能です。 Windows の標準のダイアログ ボックスを使用して、ユーザーがすぐに慣れる基本的な機能を持つアプリケーションを作成します。 PrintDialog コンポーネントは、CommonDialog クラスから継承されます。

通常、PrintDocument コンポーネントの新しいインスタンスを作成し、PrinterSettingsPageSettings のクラスを使って印刷対象を記述するプロパティを設定します。 Print メソッドを呼び出すと、実際にドキュメントが印刷されます。

コンポーネントの操作

実行時にダイアログを出力するには、PrintDialog.ShowDialog メソッドを使います。 このコンポーネントには、1 つの印刷ジョブ (PrintDocument クラス) または個々のプリンターの設定 (PrinterSettings クラス) に関連するプロパティがあります。 これらの 2 つのいずれかを複数のプリンターで共有できます。

show dialog box メソッドは、フォームに印刷ダイアログ ボックスを追加するのに役立ちます。 PrintDialog コンポーネントは Visual Studio の Windows フォーム デザイナーの下部のトレイに表示されます。

実行時に PrintDialog のユーザー入力を取り込む方法

デザイン時に印刷に関するオプションを設定できます。 場合によっては、実行時にこれらのオプションの変更が必要になることがありますが、主にユーザーによる選択が原因です。 PrintDialog コンポーネントと PrintDocument コンポーネントを使用して、ドキュメントを印刷するためのユーザー入力をキャプチャできます。 ドキュメントの印刷ダイアログを表示する方法を手順を次に示します。

  1. フォームに PrintDialogPrintDocument コンポーネントを追加します。

  2. フォームに追加した PrintDocument に、PrintDialogDocument プロパティを設定します。

    PrintDialog1.Document = PrintDocument1
    
    printDialog1.Document = printDocument1;
    
  3. ShowDialog メソッドを使用して、PrintDialog コンポーネントを表示します。

    If PrintDialog1.ShowDialog() = DialogResult.OK Then
        PrintDocument1.Print()
    End If
    
    // display show dialog and if user selects "Ok" document is printed
    if (printDialog1.ShowDialog() == DialogResult.OK)
        printDocument1.Print();
    
  4. ダイアログからのユーザーの印刷オプションは、PrintDocument コンポーネントの PrinterSettings プロパティにコピーされます。

印刷ジョブを作成する方法

Windows フォームでの印刷の基盤となるのは PrintDocument コンポーネント (具体的には PrintPage イベント) です。 PrintPage イベントを処理するコードを記述することによって、印刷する内容と印刷方法を指定できます。 印刷ジョブの作成手順を次に示します。

  1. フォームに PrintDocument コンポーネントを追加します。

  2. PrintPage イベントを処理するコードを記述します。

    独自の印刷ロジックをコーディングする必要があります。 また、印刷する素材を指定する必要があります。

    次のコード例では、印刷対象の素材として、PrintPage イベント ハンドラーで赤い四角形の図形のサンプル グラフィックが作成されます。

    Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
        e.Graphics.FillRectangle(Brushes.Red, New Rectangle(100, 100, 100, 100))
    End Sub
    
    private void PrintDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) =>
        e.Graphics.FillRectangle(Brushes.Red, new Rectangle(100, 100, 100, 100));
    

また、BeginPrintEndPrint のイベントのコードを記述することもできます。 こうすると、印刷するページの合計数を表し、各ページが印刷されるたびにデクリメントされる整数を含めることができます。

注意

PrintDialog コンポーネントをフォームに追加すると、ユーザーにとって明確で効率的なユーザー インターフェイス (UI) を提供できます。 PrintDialog コンポーネントの Document プロパティを設定すると、フォーム上で作業している印刷ドキュメントに関連するプロパティを設定できます。

プログラムによって印刷ジョブを作成する方法など、Windows フォーム印刷ジョブの詳細については、「PrintPageEventArgs」を参照してください。

印刷ジョブを完了する方法

多くの場合、印刷を行うことができるワード プロセッサやその他のアプリケーションには、印刷ジョブが完了したことをユーザーに示すオプションが用意されています。 Windows フォームでは、PrintDocument コンポーネントの EndPrint イベントを処理することでこの機能を提供できます。

以下の手順の前に、PrintDocument コンポーネントを使う Windows ベースのアプリケーションを作成しておく必要があります。 以下に示す手順は、Windows ベースのアプリケーションから印刷を有効にする標準の方法です。 PrintDocument コンポーネントを使った Windows フォームでの印刷の詳細については、「印刷ジョブを作成する方法」を参照してください。

  1. PrintDocument コンポーネントの DocumentName プロパティを設定します。

    PrintDocument1.DocumentName = "SamplePrintApp"
    
    printDocument1.DocumentName = "SamplePrintApp";
    
  2. EndPrint イベントを処理するコードを記述します。

    次のコード例では、ドキュメントの印刷が完了したことを示すメッセージ ボックスが表示されます。

    Private Sub PrintDocument1_EndPrint(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintEventArgs) Handles PrintDocument1.EndPrint
        MessageBox.Show(PrintDocument1.DocumentName + " has finished printing.")
    End Sub
    
    private void PrintDocument1_EndPrint(object sender, System.Drawing.Printing.PrintEventArgs e) =>
        MessageBox.Show(printDocument1.DocumentName + " has finished printing.");