PrinterPageSetting.cs
上传用户:jx_fiona
上传日期:2014-03-08
资源大小:1387k
文件大小:5k
源码类别:

打印编程

开发平台:

Others

  1. using System;
  2. using System.Drawing;
  3. using System.Drawing.Printing;
  4. namespace GoldPrinter
  5. {
  6. /// <summary>
  7. /// 封装页面设置、打印机设置、打印预览,适合于Window和Asp.Net,Web方式下请在配置文件中增加键PrintMode及值Web。
  8. /// 
  9. /// 作 者:长江支流(周方勇)
  10. /// Email:flygoldfish@163.com  QQ:150439795
  11. /// 网 址:www.webmis.com.cn
  12. /// ★★★★★您可以免费使用此程序,但是请您完整保留此说明,以维护知识产权★★★★★
  13. /// 
  14. /// </summary>
  15. public class PrinterPageSetting
  16. {
  17. //申明一个封装页面设置、打印机设置、打印预览的接口
  18. private IPrinterPageSetting _printerPageSetting;
  19. //打印方式
  20. private PrintModeFlag _printModeFlag;
  21. public PrintModeFlag PrintMode
  22. {
  23. get
  24. {
  25. return this._printModeFlag;
  26. }
  27. set
  28. {
  29. this._printModeFlag = value;
  30. //运用了抽象模式,创建接口对象的新实例,使其指象真正的实现其接口的对象
  31. if (this._printModeFlag == PrintModeFlag.Win)
  32. {
  33. _printerPageSetting = new WinPrinterPageSetting();
  34. }
  35. else if(this._printModeFlag == PrintModeFlag.Web)
  36. {
  37. //注意,Web方式下的程序请密切关注WWW.AlinkSoft.COM
  38. _printerPageSetting = new WebPrinterPageSetting();
  39. }
  40. }
  41. }
  42. /// <summary>
  43. /// 获取或设置打印文档
  44. /// </summary>
  45. public PrintDocument PrintDocument
  46. {
  47. get
  48. {
  49. return _printerPageSetting.PrintDocument;
  50. }
  51. set
  52. {
  53. _printerPageSetting.PrintDocument = value;
  54. }
  55. }
  56. /// <summary>
  57. /// 关联一个方法,目的是让具体的打印由实例化者来操作。这里当然属性使用,其实可以用PrintPage。
  58. /// 如PrinterPageSetting1.PrintPage += new PrintPageDelegate(this.PrintPageEventHandler);
  59. /// PrinterPageSetting1.PrintPageValue = new PrintPageDelegate(this.PrintPageEventHandler);
  60. /// </summary>
  61. public PrintPageDelegate PrintPageValue
  62. {
  63. set
  64. {
  65. _printerPageSetting.PrintPageValue = value;
  66. }
  67. get
  68. {
  69. return _printerPageSetting.PrintPageValue;
  70. }
  71. }
  72. /// <summary>
  73. /// 当需要为当前页打印的输出时发生,如果对此不了解,就用PrintPageValue赋值也可以
  74. /// </summary>
  75. public event PrintPageDelegate PrintPage
  76. {
  77. add
  78. {
  79. _printerPageSetting.PrintPage += new PrintPageDelegate(value);
  80. }
  81. remove
  82. {
  83. _printerPageSetting.PrintPage -= new PrintPageDelegate(value);
  84. }
  85. }
  86. /// <summary>
  87. /// 导出Excel的实现
  88. /// </summary>
  89. public ImportExcelDelegate ImportExcelValue
  90. {
  91. set
  92. {
  93. _printerPageSetting.ImportExcelValue = value;
  94. }
  95. get
  96. {
  97. return _printerPageSetting.ImportExcelValue;
  98. }
  99. }
  100. #region 构造函数
  101. /// <summary>
  102. ///  封装页面设置、打印机设置、打印预览,适合于Window和Asp.Net,Web方式下请在配置文件中增加键PrintMode及值Web,也可以实例化后设置PrintMode属性为PrintModeFlag.Web。
  103. /// </summary>
  104. public PrinterPageSetting():this(null)
  105. {
  106. }
  107. /// <summary>
  108. ///  封装页面设置、打印机设置、打印预览,适合于Window和Asp.Net,Web方式下请在配置文件中增加键PrintMode及值Web,也可以实例化后设置PrintMode属性为PrintModeFlag.Web。
  109. /// </summary>
  110. /// <param name="printDocument">如果为null,则提供一个默认的PrintDocument</param>
  111. public PrinterPageSetting(PrintDocument printDocument)
  112. {
  113. string strPrintMode = "";
  114. //配置文件中键PrintMode
  115. strPrintMode = System.Configuration.ConfigurationSettings.AppSettings["PrintMode"];
  116. if (strPrintMode == null)
  117. {
  118. //默认为Win方式
  119. strPrintMode = "Win";
  120. }
  121. //配置文件中键PrintMode的值Win/Web
  122. if (strPrintMode.ToUpper() == "WIN")
  123. {
  124. this.PrintMode = PrintModeFlag.Win;
  125. }
  126. else
  127. {
  128. this.PrintMode = PrintModeFlag.Web;
  129. }
  130. /*  //配置文件中添加键值的写法
  131. <?xml version="1.0" encoding="utf-8" ?>
  132. <configuration>
  133. <appSettings>
  134. <add key="PrintMode" value="Web"/>
  135. </appSettings>
  136. </configuration>
  137. */
  138. if (printDocument != null)
  139. {
  140. _printerPageSetting.PrintDocument = printDocument;
  141. }
  142. }
  143. #endregion
  144. /// <summary>
  145. /// 显示页面设置对话框,并返回PageSettings
  146. /// </summary>
  147. /// <returns></returns>
  148. public PageSettings ShowPageSetupDialog()
  149. {
  150. return _printerPageSetting.ShowPageSetupDialog();
  151. }
  152. /// <summary>
  153. /// 显示打印机设置对话框,并返回PrinterSettings
  154. /// </summary>
  155. /// <returns></returns>
  156. public PrinterSettings ShowPrintSetupDialog()
  157. {
  158. return _printerPageSetting.ShowPrintSetupDialog();
  159. }
  160. /// <summary>
  161. /// 显示打印预览对话框
  162. /// </summary>
  163. public void ShowPrintPreviewDialog()
  164. {
  165. _printerPageSetting.ShowPrintPreviewDialog();
  166. }
  167. }//End Class
  168. }//End NameSpace