プリンタ選択ダイアログを表示して、ユーザーにプリンタを選んでもらってから、そのプリンタを使って印刷する方法を紹介します。
プリンタ選択ダイアログを表示するには、PrintDialogクラスを用います。この時、PrintDialog.Documentプロパティに印刷で使用するPrintDocumentオブジェクトを指定します。
ここではその例として、「印刷する」で紹介したサンプルに手を加え、プリンタ選択ダイアログを表示してから印刷するようにしています。
'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 'PrintDialogクラスの作成 Dim pdlg As New PrintDialog 'PrintDocumentを指定 pdlg.Document = pd '印刷の選択ダイアログを表示する If pdlg.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
//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); //PrintDialogクラスの作成 PrintDialog pdlg = new PrintDialog(); //PrintDocumentを指定 pdlg.Document = pd; //印刷の選択ダイアログを表示する if (pdlg.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(); }
注意:64ビット環境では、PrintDialog.ShowDialogメソッドを呼び出してもダイアログが表示されない場合があります。そのような場合は、ShowDialogメソッドを呼び出す前にPrintDialog.UseEXDialogプロパティをTrueにしてください。なおこのプロパティは、.NET Framework 2.0以降で使用できます。
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。