Csharp/C Sharp by API/System.Drawing.Printing/PrintPageEventArgs

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

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>