■ プリンタ
* PrintDocument を利用する
【1】 印刷に関するサンプル
デザイン部
* printDocument1 x 1
* printDialog1 x 1
+ Document : printDocument1
+ UseEXDialog : True
* printPreviewDialog1 x 1
+ Document : printPreviewDialog1
* pageSetupDialog1 x 1
+ Document : printDocument1
+ EnableMetric : True
サンプル
public partial class Form1 : Form
{
private String printText = String.Empty;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (DialogResult.OK == this.printDialog1.ShowDialog())
{
this.SetPrintDocument();
this.printDocument1.Print();
}
}
private void printDocument1_PrintPage(
object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Font font = new Font("MS ゴシック", 12);
e.Graphics.DrawString(this.textBox1.Text,
font, Brushes.Black, new Point(100, 100));
}
private void button2_Click(object sender, EventArgs e)
{
this.SetPrintDocument();
this.printPreviewDialog1.ShowDialog();
}
private void button3_Click(object sender, EventArgs e)
{
this.pageSetupDialog1.ShowDialog();
}
private void SetPrintDocument()
{
this.printText = this.textBox1.Text;
this.printDocument1.DocumentName = "Sample";
}
}
【2】インストールされているプリンタをコンボボックスに表示
サンプル
#region フォームロードイベント
/// <summary>
/// フォーム初期起動時に関する処理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form1_Load(object sender, EventArgs e)
{
PrintDocument pd = new PrintDocument();
int defalutIndex = 0;
foreach(string printerName in PrinterSettings.InstalledPrinters)
{
// コンボボックスの項目にプリンタ名を追加
comboBox1.Items.Add(printerName);
// 通常使用しているプリンタをデフォルト表示
if (printerName.Equals(pd.PrinterSettings.PrinterName))
{
comboBox1.SelectedIndex = defalutIndex;
}
defalutIndex++;
}
}
#endregion
【3】クリスタルレポートを印刷する
* ReportDocument を利用する
サンプル
// 印刷する帳票のレポートドキュメント
ReportDocument reportDocument = null;
try
{
#region レポートファイル(.rpt)パスの取得
// レポートファイルパスの取得
string path = System.IO.Path.GetDirectoryName(Application.ExecutablePath);
path = path + "xxx.rpt";
#region レポートをロード
reportDocument = new ReportDocument();
reportDocument.Load(path);
#endregion
#region 印刷設定
// 使用するプリンタの選択
reportDocument.PrintOptions.PrinterName = comboBox1.Text;
// 用紙の向きを横に設定
reportDocument.PrintOptions.PaperOrientation =
CrystalDecisions.Shared.PaperOrientation.Landscape;
#endregion
// データセットのバインド
reportDocument.SetDataSource(dataSet1);
/*
* 印刷実行
*
* 引数は、左から「印刷する部数」、「ページ単位」
* 「印刷する最初のページ」、「印刷する最後のページ」
*
* すべてのページを印刷するには、
* 「印刷する最初のページ」と 「印刷する最後のページ」を 0 に設定する。
*/
reportDocument.PrintToPrinter(1, false, 0, 0);
}
catch (Exception ex)
{
}