Multi Page Print : Print PrintDocument : GUI Windows Forms C# Examples


C# Examples » GUI Windows Forms » Print PrintDocument »

 

Multi Page Print









    
using  System;
using  System.Drawing;
using  System.Windows.Forms;
using  System.Drawing.Printing;

public  class  PrintDocumentSubClass  :  Form
{
        public  PrintDocumentSubClass()
        {
                this.cmdPrint  =  new  System.Windows.Forms.Button();
                this.SuspendLayout();
                //  
                this.cmdPrint.Location  =  new  System.Drawing.Point(109,  122);
                this.cmdPrint.Size  =  new  System.Drawing.Size(75,  23);
                this.cmdPrint.Text  =  "Print";
                this.cmdPrint.UseVisualStyleBackColor  =  true;
                this.cmdPrint.Click  +=  new  System.EventHandler(this.cmdPrint_Click);
                //  
                this.AutoScaleDimensions  =  new  System.Drawing.SizeF(6F,  13F);
                this.AutoScaleMode  =  System.Windows.Forms.AutoScaleMode.Font;
                this.ClientSize  =  new  System.Drawing.Size(278,  259);
                this.Controls.Add(this.cmdPrint);
                this.Text  =  "Multi  Page  Print";
                this.ResumeLayout(false);
        }

        private  void  cmdPrint_Click(object  sender,  EventArgs  e)
        {
                PrintDocument  doc  =  new  TextDocument();
                doc.PrintPage  +=  this.Doc_PrintPage;

                PrintDialog  dlgSettings  =  new  PrintDialog();
                dlgSettings.Document  =  doc;

                if  (dlgSettings.ShowDialog()  ==  DialogResult.OK)
                {
                        doc.Print();
                }
        }

        private  void  Doc_PrintPage(object  sender,  PrintPageEventArgs  e)
        {
                TextDocument  doc  =  (TextDocument)sender;

                Font  font  =  new  Font("Arial",  10);
                
                float  lineHeight  =  font.GetHeight(e.Graphics);

                float  x  =  e.MarginBounds.Left;
                float  y  =  e.MarginBounds.Top;

                doc.PageNumber  +=  1;

                while  ((y  +  lineHeight)  <  e.MarginBounds.Bottom  &&  doc.Offset  <=  doc.Text.GetUpperBound(0))
                {
                        e.Graphics.DrawString(doc.Text[doc.Offset],  font,Brushes.Black,  x,  y);
                        doc.Offset  +=  1;
                        y  +=  lineHeight;
                }

                if  (doc.Offset  <  doc.Text.GetUpperBound(0))
                {
                        e.HasMorePages  =  true;
                }  else  {
                        doc.Offset  =  0;
                }
                
        }
        [STAThread]
        static  void  Main()
        {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new  PrintDocumentSubClass());
        }
        private  System.Windows.Forms.Button  cmdPrint;
}

class  TextDocument  :  PrintDocument{
        private  string[]  text;

        public  string[]  Text;

        public  int  PageNumber;

        public  int  Offset;
        

        public  TextDocument()
        {
                this.Text  =  new  string[100];
                for  (int  i  =  0;  i  <  100;  i++)
                {
                        this.Text[i]  +=  "string  Text  ";
                }
        }
}
    
   
  
   




HTML code for linking to this page:

Follow Navioo On Twitter

C# Examples

 Navioo GUI Windows Forms
» Print PrintDocument