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

打印编程

开发平台:

Others

  1. using System;
  2. using System.Drawing;
  3. using System.Drawing.Printing;
  4. namespace GoldPrinter
  5. {
  6. /// <summary>
  7. /// 定义打印过程中单件,即在系统过程中只会实例化一次的对象,并且只有同一个对象。本类不能实例化,但提供静态方法
  8. /// 原因之一是大家公用,但最重要的一个原因是改变PrintDocument会引起PrinterMargins的变化,而每次计算需要花好多的时间,影响效率。
  9. /// 
  10. /// 作 者:长江支流(周方勇)
  11. /// Email:flygoldfish@163.com  QQ:150439795
  12. /// 网 址:www.webmis.com.cn
  13. /// ★★★★★您可以免费使用此程序,但是请您完整保留此说明,以维护知识产权★★★★★
  14. /// 
  15. /// </summary>
  16. public class PrinterSingleton
  17. {
  18.         private PrinterSingleton(){}
  19.         private static PrintDocument thePrintDocumentInstance = null;
  20.         private static PrinterMargins thePrinterMarginsInstance = null;
  21. public static void Reset()
  22. {
  23. if (thePrintDocumentInstance != null)
  24. {
  25. thePrintDocumentInstance.Dispose();
  26. }
  27. thePrintDocumentInstance = null;
  28. thePrinterMarginsInstance = null;
  29. }
  30. public static PrintDocument PrintDocument
  31. {
  32. get
  33. {
  34. return GetPrintDocumentInstance();
  35. }
  36. set
  37. {
  38. thePrintDocumentInstance = value;
  39. }
  40. }
  41. public static PrinterMargins PrinterMargins
  42. {
  43. get
  44. {
  45. return GetPrinterMarginsInstance();
  46. }
  47. set
  48. {
  49. thePrinterMarginsInstance = value;
  50. }
  51. }
  52.         private static PrintDocument GetPrintDocumentInstance()
  53.         {
  54.             if (thePrintDocumentInstance == null)
  55.             {
  56.                 thePrintDocumentInstance = new PrintDocument();
  57.             }
  58.             return thePrintDocumentInstance;
  59.         }
  60.         private static PrinterMargins GetPrinterMarginsInstance()
  61.         {
  62.             if (thePrinterMarginsInstance == null)
  63.             {
  64.                 thePrinterMarginsInstance = new PrinterMargins(PrinterSingleton.GetPrintDocumentInstance());
  65.             }
  66.             return thePrinterMarginsInstance;
  67.         }
  68. }//End Class
  69. }//End NameSpace