📄 winprinterpagesetting.cs
字号:
using System;
using System.Drawing;
using System.Drawing.Printing;
using System.Windows.Forms;
namespace GoldPrinter
{
/// <summary>
/// WinForm下的打印纸张设置、打印机设置、打印预览对话框。
///
/// 程序提供:周方勇;Email:flygoldfish@sina.com。
/// 请 关 注:WebMIS.Net快速开发工具,不写一行程序开发B/S架构下MIS、OA、CRM、人事管理、档案管理等数据库网页系统。简单、实用、稳定、可靠。
/// 下 载:
/// 上海奥联:WWW.AlinkSoft.COM
/// 用友华表:WWW.CellSoft.CC
///★★★★★您可以免费使用此程序,但是请您保留此说明,以维护知识产权★★★★★
/// </summary>
public class WinPrinterPageSetting:IPrinterPageSetting
{
//把PrintPage委托声明为类的一个成员变量
private PrintPageDelegate _printPage;
// 打印文档
private PrintDocument _printDocument;
#region 构造函数
public WinPrinterPageSetting():this(null)
{
}
/// <summary>
/// 使用printDocument来初始化类的新实例,当printDocument为null时自动创建一个printDocument的实例
/// </summary>
/// <param name="printDocument"></param>
public WinPrinterPageSetting(PrintDocument printDocument)
{
if (printDocument != null)
{
_printDocument = printDocument;
}
else
{
_printDocument = new PrintDocument();
}
}
#endregion
#region IPrinterPageSetting 成员
/// <summary>
/// 获取或设置打印文档
/// </summary>
public PrintDocument PrintDocument
{
get
{
return this._printDocument;
}
set
{
this._printDocument = value;
}
}
/// <summary>
/// 一定要实例化此类后在调用打印/预览之前设置此属性,使之关联一个方法,目的是让具体的打印由实例化者来操作
/// 如PrinterPageSetting1.PrintPage += new PrintPageDelegate(this.PrintPageEventHandler);
/// </summary>
public PrintPageDelegate PrintPage
{
set
{
//初始委托变量,关联方法
_printPage = value;
if (_printDocument==null)
{
throw new Exception("关联的打印文档不能为空!");
}
_printDocument.PrintPage +=new System.Drawing.Printing.PrintPageEventHandler(this._printPage);
}
get
{
return _printPage;
}
}
/// <summary>
/// 显示页面设置对话框,并返回PageSettings
/// </summary>
/// <returns></returns>
public PageSettings ShowPageSetupDialog()
{
return ShowPageSetupDialog(this._printDocument);
}
/// <summary>
/// 显示打印机设置对话框,并返回PrinterSettings
/// </summary>
/// <returns></returns>
public PrinterSettings ShowPrintSetupDialog()
{
return ShowPrintSetupDialog(this._printDocument);
}
/// <summary>
/// 显示打印预览对话框
/// </summary>
public void ShowPrintPreviewDialog()
{
ShowPrintPreviewDialog(this._printDocument);
}
#endregion
//***************注意:以下几个对话框方法可以独立使用***************
#region 页面设置对话框 protected virtual PageSettings ShowPageSetupDialog(PrintDocument printDocument)
/// <summary>
/// 页面设置对话框,可以独立使用
/// </summary>
/// <param name="printDocument"></param>
/// <returns></returns>
/// <remarks>
/// 作 者:周方勇
/// 修改日期:2004-08-07
/// </remarks>
protected virtual PageSettings ShowPageSetupDialog(PrintDocument printDocument)
{
//声明返回值的PageSettings
PageSettings ps = new PageSettings();
if (printDocument==null)
{
throw new Exception("关联的打印文档不能为空!");
}
try
{
//申明并实例化PageSetupDialog
PageSetupDialog psDlg = new PageSetupDialog();
//相关文档及文档页面默认设置
psDlg.Document = printDocument;
psDlg.PageSettings = printDocument.DefaultPageSettings;
//显示对话框
DialogResult result = psDlg.ShowDialog();
if (result == DialogResult.OK)
{
ps = psDlg.PageSettings;
printDocument.DefaultPageSettings = psDlg.PageSettings;
}
}
catch(System.Drawing.Printing.InvalidPrinterException e)
{
MessageBox.Show("未安装打印机,请进入系统控制面版添加打印机!","打印",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message,"打印",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
return ps;
}
#endregion
#region 打印设置对话框 protected virtual PrinterSettings ShowPrintSetupDialog(PrintDocument printDocument)
/// <summary>
/// 打印设置对话框,可以独立使用
/// </summary>
/// <param name="printDocument"></param>
/// <returns></returns>
/// <remarks>
/// 作 者:周方勇
/// 修改日期:2004-08-07
/// </remarks>
protected virtual PrinterSettings ShowPrintSetupDialog(PrintDocument printDocument)
{
//声明返回值的PrinterSettings
PrinterSettings ps = new PrinterSettings();
if (printDocument==null)
{
throw new Exception("关联的打印文档不能为空!");
}
try
{
//申明并实例化PrintDialog
PrintDialog pDlg = new PrintDialog();
//可以选定页
pDlg.AllowSomePages = true;
//指定打印文档
pDlg.Document = printDocument;
//显示对话框
DialogResult result = pDlg.ShowDialog();
if (result == DialogResult.OK)
{
//保存打印设置
ps = pDlg.PrinterSettings;
//打印
printDocument.Print();
}
}
catch(System.Drawing.Printing.InvalidPrinterException e)
{
MessageBox.Show("未安装打印机,请进入系统控制面版添加打印机!","打印",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message,"打印",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
return ps;
}
#endregion
#region 打印预览对话框 protected virtual void ShowPrintPreviewDialog(PrintDocument printDocument)
/// <summary>
/// 打印预览对话框,可以独立使用
/// </summary>
/// <param name="printDocument"></param>
/// <returns></returns>
/// <remarks>
/// 作 者:周方勇
/// 修改日期:2004-08-07
/// </remarks>
protected virtual void ShowPrintPreviewDialog(PrintDocument printDocument)
{
if (printDocument==null)
{
throw new Exception("关联的打印文档不能为空!");
}
try
{
//申明并实例化PrintPreviewDialog
PrintPreviewDialog ppDlg = new PrintPreviewDialog();
//指定打印文档
ppDlg.Document = printDocument;
//显示对话框
DialogResult result = ppDlg.ShowDialog();
if (result == DialogResult.OK)
{
//...
}
}
catch(System.Drawing.Printing.InvalidPrinterException e)
{
MessageBox.Show("未安装打印机,请进入系统控制面版添加打印机!","打印",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message,"打印",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
}
#endregion
}//End Class
}//End NameSpace
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -