Csharp/C Sharp by API/System.Drawing.Printing/PrintPageEventArgs
PrintPageEventArgs.HasMorePages
<source lang="csharp"> using System; using System.Drawing; using System.Collections; using System.ruponentModel; using System.Windows.Forms; using System.Data; public class Form1 : System.Windows.Forms.Form {
private System.Windows.Forms.RichTextBox richTextBox1; private System.Windows.Forms.Button button1; private System.Windows.Forms.Button button2; private System.ruponentModel.Container components = null; private System.Windows.Forms.PrintDialog printDialog1; private System.Drawing.Printing.PrintDocument ThePrintDocument = null; private System.IO.StringReader myStringReader = null; public Form1() { ThePrintDocument = new System.Drawing.Printing.PrintDocument(); this.richTextBox1 = new System.Windows.Forms.RichTextBox(); this.button1 = new System.Windows.Forms.Button(); this.button2 = new System.Windows.Forms.Button(); this.printDialog1 = new System.Windows.Forms.PrintDialog(); this.SuspendLayout(); this.richTextBox1.Location = new System.Drawing.Point(72, 16); this.richTextBox1.Size = new System.Drawing.Size(344, 320); this.richTextBox1.Text = "richTextBox1"; this.button1.Location = new System.Drawing.Point(128, 352); this.button1.Text = "&Print"; this.button1.Click += new System.EventHandler(this.button1_Click); this.button2.Location = new System.Drawing.Point(280, 352); this.button2.Text = "&Close"; this.button2.Click += new System.EventHandler(this.button2_Click); this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(488, 381); this.Controls.AddRange(new System.Windows.Forms.Control[] { this.button2, this.button1, this.richTextBox1}); this.ResumeLayout(false); } [STAThread] static void Main() { Application.Run(new Form1()); } private void button2_Click(object sender, System.EventArgs e) { Close(); } private void button1_Click(object sender, System.EventArgs e) { ThePrintDocument.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(PrintPage); printDialog1.Document = ThePrintDocument; string strText = this.richTextBox1.Text; myStringReader = new System.IO.StringReader(strText); if (printDialog1.ShowDialog() == DialogResult.OK) { this.ThePrintDocument.Print(); } } protected void PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs ev) { float linesPerPage = 0; float yPosition = 0; int count = 0; float leftMargin = ev.MarginBounds.Left; float topMargin = ev.MarginBounds.Top; string line = null; Font printFont = this.richTextBox1.Font; SolidBrush myBrush = new SolidBrush(Color.Black); linesPerPage = ev.MarginBounds.Height / printFont.GetHeight(ev.Graphics); while (count < linesPerPage && ((line = myStringReader.ReadLine()) != null)) { yPosition = topMargin + (count * printFont.GetHeight(ev.Graphics)); ev.Graphics.DrawString(line, printFont, myBrush, leftMargin,yPosition, new StringFormat()); count++; } if (line != null) ev.HasMorePages = true; else ev.HasMorePages = false; myBrush.Dispose(); }
}
</source>