Mega Code Archive

 
Categories / C# Tutorial / GUI Windows Forms
 

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 ";         }     } }