www.pudn.com > Cnewprint.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; 
			} 
		} 
 
 
		///  
		/// 一定要实例化此类后在调用打印/预览初始此变量,使之关联一个方法,目的是让具体的打印由实例化者来操作 
		/// 如PrinterPageSetting1.PrintPage += new PrintPageDelegate(this.PrintPageEventHandler); 
		///  
		public PrintPageDelegate PrintPage 
		{ 
			set 
			{	 
				_printerPageSetting.PrintPage = value; 
			} 
			get 
			{ 
				return _printerPageSetting.PrintPage; 
			} 
		} 
 
 
 
		#region	构造函数 
		///  
		///  封装页面设置、打印机设置、打印预览,适合于Window和Asp.Net,Web方式下请在配置文件中增加键PrintMode及值Web,也可以实例化后设置PrintMode属性为PrintModeFlag.Web。 
		///  
		public PrinterPageSetting():this(null) 
		{ 
			 
		} 
 
		///  
		///  封装页面设置、打印机设置、打印预览,适合于Window和Asp.Net,Web方式下请在配置文件中增加键PrintMode及值Web,也可以实例化后设置PrintMode属性为PrintModeFlag.Web。 
		///  
		///  
		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;			 
			} 
 
			/*  //配置文件中添加键值的写法 
				 
				 
					 
								 
					 
				 
			*/ 
 
			_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