準備
(なし)
デザイン
1. フォーム (Form1) にボタン (button1) を配置します。
2. フォーム (Form1) にレポートビューア (reportViewer1) を配置します。
サンプルコード (C#)
// 名前空間の追加 using System.Drawing.Printing; // コード private void button1_Click(object sender, EventArgs e) { // 変数の宣言 PageSettings ps = new PageSettings(); // プリンタ設定オブジェクト // 余白の設定 ps.Margins.Left = (int)(10 / 10 / 2.54 * 100); // 約10mm ps.Margins.Right = (int)(20 / 10 / 2.54 * 100); // 約20mm ps.Margins.Top = (int)(30 / 10 / 2.54 * 100); // 約30mm ps.Margins.Bottom = (int)(40 / 10 / 2.54 * 100); // 約40mm // 用紙サイズの設定 foreach (PaperSize PSize in reportViewer1.PrinterSettings.PaperSizes) { if (PSize.ToString().Contains("B4")) { ps.PaperSize = PSize; break; } } // 給紙方法の設定 foreach (PaperSource PSource in reportViewer1.PrinterSettings.PaperSources) { if (PSource.ToString().Contains("MP")) { ps.PaperSource = PSource; break; } } // 印刷の向きの設定 ps.Landscape = true; // ReportViewer オブジェクトの設定 reportViewer1.PrinterSettings.PrinterName = "EPSON LP-S5000"; reportViewer1.SetPageSettings(ps); }
解説
レポートビューアのページ設定ダイアログの内容を設定しています。 使用するプリンタはこのダイアログには表示されていませんが、ReportViewer コントロールに直接設定できます。尚、Windows 7 環境ではプリンタの変更はできませんが、Windows XP 環境では、このダイアログに [プリンタの設定] ボタンが表示され、プリンタの変更が可能です。 用紙のサイズ、給紙方法、印刷の向き、余白は直接 ReportViewer コントロールに設定ができません。一度 PageSettings オブジェクトを作成し、そのプロパティを変更していきます。そして、最後に ReportViewer コントロールに PageSettings オブジェクトを設定します。この際、ReportViewer コントロールが null の状態の場合は、設定は反映されません。事前に ReportViewer コントロールにデータセットを割り当てデータが表示されている状態にしておく必要があります。そのため、これらのページ設定はデータの設定の後に行う必要があります。 このサンプルでは、EPSON LP-S5000 というプリンタを設定しています。用紙サイズは B4、給紙方法は MP トレイ (手差し)、印刷の向きは横、余白は左/右/上/下の順に 10mm/20/mm/30mm/40mm に設定しています。 PageSettings オブジェクトに設定する余白の単位は 1/100 インチです。そのため、変換の際に誤差が発生するため、実際の指定値が表示されるとは限りません。
結果
動作確認環境
Visual Studio 2015 Professional (C# 6.0)