Microsoft Visual Studioのウィンドウでツールボックスの印刷グループでは以下の項目がある。
ポインター
PageSetupDialog
PrintDialog
PrintDocument
PrintPreviewControl
PrintPreviewDialog
ここではPageSetupDialogとPrintPreviewControlを使用する。
PageSetupDialogは非UIオブジェクトであり、配置するとフォームデザイナの下に表示される。プロパティにはAllowMargins(余白有効真偽)、AllowOrientation(印刷の向き有効真偽)、Allowpaper(用紙有効真偽)などがある。
PageSetupDialogは以下のようなダイアログである。
フォームデザイナでPageSetupDialogでpageSetupDialog1という名前で配置されているものとしてコードを示す。
System.Drawing.Printing.PrintDocument pd =
new System.Drawing.Printing.PrintDocument();
this.pageSetupDialog1.Document = pd;
if (this.pageSetupDialog1.ShowDialog() == DialogResult.OK)
{
MessageBox.Show("[OK]がクリックされました。");
}
フォームデザイナのコントロールを使わない場合は以下のようなコードになる。
System.Drawing.Printing.PrintDocument pd =
new System.Drawing.Printing.PrintDocument();
System.Windows.Forms.PageSetupDialog psd = new PageSetupDialog();
psd.Document = pd;
if (psd.ShowDialog() == DialogResult.OK)
{
MessageBox.Show("[OK]がクリックされました。");
}
[ページ設定]ダイアログの結果をメッセージボックスで表示するコード示す。
if (psd.ShowDialog() == DialogResult.OK)
{
MessageBox.Show("[OK]がクリックされました。");
System.Drawing.Printing.PageSettings ps = psd.PageSettings;
string s;
s = ps.PaperSize.ToString() + Environment.NewLine +
ps.PaperSize.PaperName + Environment.NewLine +
ps.PaperSize.Width.ToString() + Environment.NewLine +
ps.PaperSource.SourceName;
MessageBox.Show(s, "PaperSize 用紙設定");
s = ps.Margins.ToString() + Environment.NewLine +
ps.Margins.Left.ToString();
MessageBox.Show(s, "Margins 余白");
s = ps.Bounds.ToString() + Environment.NewLine +
ps.Bounds.Left;
MessageBox.Show(s, "Bounds 境界");
s = ps.PrintableArea.ToString() + Environment.NewLine +
ps.PrintableArea.Left.ToString();
MessageBox.Show(s, "PrintableArea 印刷領域");
s = ps.Landscape.ToString();
MessageBox.Show(s, "Landscape 印刷方向(Falseが縦)");
}
メッセージボックスの結果は以下のようになる。「キャプション、破線、テキスト」の順で空白1行区切りである。
[OK]がクリックされました。
---------------------------
PaperSize 用紙設定
---------------------------
[PaperSize A4 210 x 297 mm Kind=A4 Height=1169 Width=827]
A4 210 x 297 mm
827
用紙カセット
Margins 余白
---------------------------
[Margins Left=39 Right=39 Top=39 Bottom=39]
39
Bounds 境界
---------------------------
{X=0,Y=0,Width=827,Height=1169}
0
PrintableArea 印刷領域
---------------------------
{X=11.66667,Y=11.66667,Width=803.3333,Height=1145.667}
11.66667
Landscape 印刷方向(Falseが縦)
---------------------------
False