Windows フォームでの印刷は、主に PrintDocument コンポーネントを使用してユーザーが印刷できるようにすることで構成されます。 PrintPreviewDialog コントロール、PrintDialog、およびPageSetupDialogコンポーネントは、Windows オペレーティング システム ユーザーに使い慣れたグラフィカル インターフェイスを提供します。
PrintDialog
コンポーネントは、プリンターの選択、印刷するページの選択、Windows ベースのアプリケーションでの印刷関連のその他の設定の決定に使用される事前構成済みのダイアログ ボックスです。 これは、独自のダイアログ ボックスを構成する代わりに、プリンターと印刷関連の設定のための簡単なソリューションです。 ユーザーが文書の多くの部分 (すべて印刷、選択したページ範囲の印刷、または選択範囲の印刷) を行えるようにすることができます。 標準の Windows ダイアログ ボックスに依存することで、基本的な機能がユーザーにとってすぐに使い慣れたアプリケーションを作成できます。
PrintDialog コンポーネントは、CommonDialog クラスから継承します。
通常、 PrintDocument コンポーネントの新しいインスタンスを作成し、 PrinterSettings クラスと PageSettings クラスを使用して印刷する内容を記述するプロパティを設定します。 Print メソッドを呼び出すと、ドキュメントが実際に印刷されます。
コンポーネントの操作
PrintDialog.ShowDialog メソッドを使用して、実行時にダイアログを表示します。 このコンポーネントには、1 つの印刷ジョブ (PrintDocument クラス) または個々のプリンター (PrinterSettings クラス) の設定に関連するプロパティがあります。 2 つのうちの 1 つは、複数のプリンターによって共有される場合があります。
show dialog box メソッドは、フォームに印刷ダイアログ ボックスを追加するのに役立ちます。 PrintDialog コンポーネントは、Visual Studio の Windows フォーム デザイナーの下部にあるトレイに表示されます。
実行時に PrintDialog からユーザー入力をキャプチャする方法
デザイン時に印刷に関連するオプションを設定できます。 場合によっては、実行時にこれらのオプションを変更することが必要になる場合があります。ほとんどの場合、ユーザーによる選択が原因です。 PrintDialog および PrintDocument コンポーネントを使用して、ドキュメントを印刷するためのユーザー入力をキャプチャできます。 次の手順は、ドキュメントの印刷ダイアログを表示する方法を示しています。
フォームに PrintDialog と PrintDocument コンポーネントを追加します。
Document の PrintDialog プロパティを、フォームに追加された PrintDocument に設定します。
PrintDialog1.Document = PrintDocument1
printDialog1.Document = printDocument1;
PrintDialog メソッドを使用して、ShowDialog コンポーネントを表示します。
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();
ユーザーがダイアログで選択した印刷の設定は、PrinterSettings プロパティに PrintDocument コンポーネントがコピーされます。
印刷ジョブを作成する方法
Windows フォームでの印刷の基礎は、 PrintDocument コンポーネント (具体的には、 PrintPage イベント) です。 PrintPage イベントを処理するコードを記述することで、印刷する内容とその出力方法を指定できます。 次の手順では、印刷ジョブの作成を示します。
PrintDocument コンポーネントをフォームに追加します。
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));
また、 BeginPrint イベントと EndPrint イベントのコードを記述することもできます。 印刷する各ページごとにデクリメントされる、印刷対象ページの総数を表す整数を含めることが役立ちます。
注
PrintDialog コンポーネントをフォームに追加して、ユーザーにクリーンで効率的なユーザー インターフェイス (UI) を提供できます。 Document コンポーネントの PrintDialog プロパティを設定すると、フォームで操作している印刷ドキュメントに関連するプロパティを設定できます。
プログラムによる印刷ジョブの作成方法など、Windows フォーム印刷ジョブの詳細については、「 PrintPageEventArgs」を参照してください。
印刷ジョブを完了する方法
多くの場合、ワード プロセッサや印刷を伴うその他のアプリケーションでは、印刷ジョブが完了したことを示すメッセージをユーザーに表示するオプションが提供されます。 この機能は、EndPrint コンポーネントのPrintDocument イベントを処理することで、Windows フォームで提供できます。
次の手順では、 PrintDocument コンポーネントを含む Windows ベースのアプリケーションを作成する必要があります。 この手順は、Windows ベースのアプリケーションからの印刷を有効にする標準的な方法です。 PrintDocument コンポーネントを使用した Windows フォームからの印刷の詳細については、「印刷ジョブを作成する方法」を参照してください。
DocumentName コンポーネントのPrintDocument プロパティを設定します。
PrintDocument1.DocumentName = "SamplePrintApp"
printDocument1.DocumentName = "SamplePrintApp";
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.");
.NET Desktop feedback