PrintDocumentクラスのPrintメソッドで印刷をすると、通常は「印刷中...」というダイアログが表示されます。ここではこのダイアログを表示させない方法を紹介します。
PrintDocumentクラスのPrintControllerプロパティはデフォルトではPrintControllerWithStatusDialogオブジェクトですが、これをStandardPrintControllerに変更することにより、「印刷中...」ダイアログを表示することなく印刷できるようになります。なお、プリントコントローラに関しては、PrintDocument クラスをご覧ください。
ただしこの方法ではPrintPreviewDialogなどの印刷プレビューで表示されるダイアログは消すことができません。(この場合にダイアログを表示させない方法は不明です。)
「印刷する」で紹介しているコードを書き換えて、「印刷中...」ダイアログを表示せずに印刷をする例を示します。
'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 'PrintControllerプロパティをStandardPrintControllerに pd.PrintController = _ New System.Drawing.Printing.StandardPrintController 'PrintPageイベントハンドラの追加 AddHandler pd.PrintPage, AddressOf pd_PrintPage '印刷を開始する pd.Print() 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(); //PrintControllerプロパティをStandardPrintControllerに pd.PrintController = new System.Drawing.Printing.StandardPrintController(); //PrintPageイベントハンドラの追加 pd.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(pd_PrintPage); //印刷を開始する 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(); }
(この記事は「.NETプログラミング研究 第31号」で紹介した記事を編集したものです。)
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。