Материал из .Net Framework эксперт
PrintPageEventArgs.HasMorePages
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();
}
}