⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 winprinterpagesetting.cs

📁 用C#编写的一个新的打印程序
💻 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 + -