Beispiel #1
0
 /// <summary>
 /// Print the content of the RichTextBox
 /// </summary>
 /// <param name="printType">Printing type to define how to perform the printing process</param>
 /// <param name="margins">Page margins or null value for use default margins</param>
 /// <param name="printType">Delegate invoked before print each page</param>
 public static void Print(this RichTextBox richTextBox, PrintType printType, Margins margins, BeforePagePrintDelegate beforePagePrintDelegate)
 {
     new RichTextBoxHelper(richTextBox).Print(printType, margins, beforePagePrintDelegate);
 }
Beispiel #2
0
    public void Print(PrintType printType, Margins margins, BeforePagePrintDelegate beforePagePrintDelegate)
    {
        var doc = new PrintDocument();

        doc.BeginPrint += new PrintEventHandler(Document_BeginPrint);
        doc.EndPrint   += new PrintEventHandler(Document_EndPrint);
        doc.PrintPage  += new PrintPageEventHandler(Document_PrintPage);
        doc.DefaultPageSettings.Margins = margins ?? new Margins(20, 20, 20, 20);
        doc.DocumentName             = "CompactView document";
        this.beforePagePrintDelegate = beforePagePrintDelegate;

        try
        {
            switch (printType)
            {
            case PrintType.DirectPrint:
                MeasureOnly = false;
                doc.Print();
                break;

            case PrintType.ShowPrintDialog:
            case PrintType.ShowPrintDialogWithTotalPages:
                if (printType == PrintType.ShowPrintDialogWithTotalPages)
                {
                    MeasureOnly = true;
                    PrintController controller = doc.PrintController;
                    doc.PrintController = new PreviewPrintController();
                    doc.Print();       // Only for calculate total pages
                    doc.PrintController = controller;
                }
                else
                {
                    TotalPages = int.MaxValue;
                }

                MeasureOnly = false;
                var printDlg = new PrintDialog
                {
                    Document       = doc,
                    AllowSomePages = true
                };
                printDlg.PrinterSettings.FromPage    = 1;
                printDlg.PrinterSettings.MinimumPage = 1;
                printDlg.PrinterSettings.ToPage      = TotalPages;
                printDlg.PrinterSettings.MaximumPage = TotalPages;
                if (printDlg.ShowDialog() == DialogResult.OK)
                {
                    doc.Print();
                }
                break;

            case PrintType.PrintPreview:
                MeasureOnly = false;
                var previewDlg = new PrintPreviewDialog
                {
                    WindowState = FormWindowState.Maximized,
                    Document    = doc,
                    ShowIcon    = false
                };
                previewDlg.ShowDialog();
                break;
            }
        }
        catch (Exception ex)
        {
            Trace.WriteLine(ex.Message);
        }
    }