www.pudn.com > PrinterPageSetting.rar > PrinterPageSetting.cs
using System;
using System.Drawing;
using System.Drawing.Printing;
namespace GoldPrinter
{
///
/// 打印方式
///
public enum PrintModeFlag
{
///
/// Windows窗口打印方式
///
Win
,
///
/// Web窗口打印方式
///
Web
}
///
/// 封装页面设置、打印机设置、打印预览,适合于Window和Asp.Net,Web方式下请在配置文件中增加键PrintMode及值Web。
///
/// 程序提供:周方勇;Email:flygoldfish@sina.com。
/// 请 关 注:WebMIS.Net快速开发工具,不写一行程序开发B/S架构下MIS、OA、CRM、人事管理、档案管理等数据库网页系统。简单、实用、稳定、可靠。
/// 下 载:
/// 上海奥联:WWW.AlinkSoft.COM
/// 用友华表:WWW.CellSoft.CC
///★★★★★您可以免费使用此程序,但是请您保留此说明,以维护知识产权★★★★★
///
public class PrinterPageSetting
{
//申明一个封装页面设置、打印机设置、打印预览的接口
private IPrinterPageSetting _printerPageSetting;
//打印方式
private PrintModeFlag _printModeFlag;
public PrintModeFlag PrintMode
{
get
{
return this._printModeFlag;
}
set
{
this._printModeFlag = value;
//运用了抽象模式,创建接口对象的新实例,使其指象真正的实现其接口的对象
if (this._printModeFlag == PrintModeFlag.Win)
{
_printerPageSetting = new WinPrinterPageSetting();
}
else if(this._printModeFlag == PrintModeFlag.Web)
{
//注意,Web方式下的程序请密切关注WWW.AlinkSoft.COM
_printerPageSetting = new WebPrinterPageSetting();
}
}
}
///
/// 获取或设置打印文档
///
public PrintDocument PrintDocument
{
get
{
return _printerPageSetting.PrintDocument;
}
set
{
_printerPageSetting.PrintDocument = value;
}
}
///
/// 关联一个方法,目的是让具体的打印由实例化者来操作。这里当然属性使用,其实可以用PrintPage。
/// 如PrinterPageSetting1.PrintPage = new PrintPageDelegate(this.PrintPageEventHandler);
///
public PrintPageDelegate PrintPageValue
{
set
{
_printerPageSetting.PrintPageValue = value;
}
get
{
return _printerPageSetting.PrintPageValue;
}
}
///
/// 当需要为当前页打印的输出时发生,如果对此不了解,就用PrintPageValue赋值也可以
///
public event PrintPageDelegate PrintPage
{
add
{
_printerPageSetting.PrintPage += new PrintPageDelegate(value);
}
remove
{
_printerPageSetting.PrintPage -= new PrintPageDelegate(value);
}
}
///
/// 导出Excel的实现
///
public ImportExcelDelegate ImportExcelValue
{
set
{
_printerPageSetting.ImportExcelValue = value;
}
get
{
return _printerPageSetting.ImportExcelValue;
}
}
#region 构造函数
///
/// 封装页面设置、打印机设置、打印预览,适合于Window和Asp.Net,Web方式下请在配置文件中增加键PrintMode及值Web,也可以实例化后设置PrintMode属性为PrintModeFlag.Web。
///
public PrinterPageSetting():this(null)
{
}
///
/// 封装页面设置、打印机设置、打印预览,适合于Window和Asp.Net,Web方式下请在配置文件中增加键PrintMode及值Web,也可以实例化后设置PrintMode属性为PrintModeFlag.Web。
///
/// 如果为null,则提供一个默认的PrintDocument
public PrinterPageSetting(PrintDocument printDocument)
{
string strPrintMode = "";
//配置文件中键PrintMode
strPrintMode = System.Configuration.ConfigurationSettings.AppSettings["PrintMode"];
if (strPrintMode == null)
{
//默认为Win方式
strPrintMode = "Win";
}
//配置文件中键PrintMode的值Win/Web
if (strPrintMode.ToUpper() == "WIN")
{
this.PrintMode = PrintModeFlag.Win;
}
else
{
this.PrintMode = PrintModeFlag.Web;
}
/* //配置文件中添加键值的写法
*/
if (printDocument != null)
{
_printerPageSetting.PrintDocument = printDocument;
}
}
#endregion
///
/// 显示页面设置对话框,并返回PageSettings
///
///
public PageSettings ShowPageSetupDialog()
{
return _printerPageSetting.ShowPageSetupDialog();
}
///
/// 显示打印机设置对话框,并返回PrinterSettings
///
///
public PrinterSettings ShowPrintSetupDialog()
{
return _printerPageSetting.ShowPrintSetupDialog();
}
///
/// 显示打印预览对话框
///
public void ShowPrintPreviewDialog()
{
_printerPageSetting.ShowPrintPreviewDialog();
}
}//End Class
}//End NameSpace