using System; using System.Drawing.Printing; namespace GoldPrinter { public class PrinterSingleton { private static PrintDocument thePrintDocumentInstance = null; private static PrinterMargins thePrinterMarginsInstance = null; public static PrintDocument PrintDocument { get { return PrinterSingleton.GetPrintDocumentInstance(); } set { PrinterSingleton.thePrintDocumentInstance = value; } } public static PrinterMargins PrinterMargins { get { return PrinterSingleton.GetPrinterMarginsInstance(); } set { PrinterSingleton.thePrinterMarginsInstance = value; } } private PrinterSingleton() { } public static void Reset() { if (PrinterSingleton.thePrintDocumentInstance != null) { PrinterSingleton.thePrintDocumentInstance.Dispose(); } PrinterSingleton.thePrintDocumentInstance = null; PrinterSingleton.thePrinterMarginsInstance = null; } private static PrintDocument GetPrintDocumentInstance() { if (PrinterSingleton.thePrintDocumentInstance == null) { PrinterSingleton.thePrintDocumentInstance = new PrintDocument(); } return PrinterSingleton.thePrintDocumentInstance; } private static PrinterMargins GetPrinterMarginsInstance() { if (PrinterSingleton.thePrinterMarginsInstance == null) { PrinterSingleton.thePrinterMarginsInstance = new PrinterMargins(PrinterSingleton.GetPrintDocumentInstance()); } return PrinterSingleton.thePrinterMarginsInstance; } } }