「印刷プレビューを表示する」で紹介したように、PrintPreviewDialogクラスで印刷プレビューダイアログを表示させた時に、ダイアログの表示位置や表示倍率を指定する方法を紹介します。
PrintPreviewDialogクラスはFormクラスから派生していますので、基本的にはFormクラスと同様の方法で表示位置を指定することができます。フォームの位置を指定する方法に関して詳しくは、「フォームの位置と大きさを取得、変更する」をご覧ください。
また表示倍率は、PrintPreviewDialogで使われているPrintPreviewControlオブジェクトを取得し、そのZoomプロパティを設定することにより変更が可能です。PrintPreviewControlオブジェクトはPrintPreviewDialog.PrintPreviewControlプロパティで取得できます。
なお、PrintPreviewControlプロパティはヘルプで「このメンバは、.NET Framework インフラストラクチャのサポートを目的としています。独自に作成したコード内で直接使用することはできません。」と書かれていますので、これが適当な方法である保障はありません。
「印刷プレビューを表示する」で紹介しているコードに手を加えて、印刷プレビューダイアログの表示位置(及びサイズ)と表示倍率を指定する例を以下に示します。ここでは、印刷プレビューダイアログを表示するコード(Button1_Clickメソッド内のコード)のみを示し、それ以外は省略します。
'PrintDocumentオブジェクトの作成 Dim pd As New System.Drawing.Printing.PrintDocument 'PrintPageイベントハンドラの追加 AddHandler pd.PrintPage, AddressOf pd_PrintPage 'PrintPreviewDialogオブジェクトの作成 Dim ppd As New PrintPreviewDialog 'はじめの表示位置を指定する ppd.StartPosition = FormStartPosition.Manual ppd.SetBounds(0, 0, 400, 400) '表示倍率を2倍にする ppd.PrintPreviewControl.Zoom = 2 'プレビューするPrintDocumentを設定 ppd.Document = pd '印刷プレビューダイアログを表示する ppd.ShowDialog()
//PrintDocumentオブジェクトの作成 System.Drawing.Printing.PrintDocument pd = new System.Drawing.Printing.PrintDocument(); //PrintPageイベントハンドラの追加 pd.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(pd_PrintPage); //PrintPreviewDialogオブジェクトの作成 PrintPreviewDialog ppd = new PrintPreviewDialog(); //はじめの表示位置を指定する ppd.StartPosition = FormStartPosition.Manual; ppd.SetBounds(0, 0, 400, 400); //表示倍率を2倍にする ppd.PrintPreviewControl.Zoom = 2; //プレビューするPrintDocumentを設定 ppd.Document = pd; //印刷プレビューダイアログを表示する ppd.ShowDialog();
(この記事は、「.NETプログラミング研究 第48号」で紹介したものを基にしています。)