<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FCSharp_Tutorial%2FGUI_Windows_Forms%2FPrint_PrintDocument</id>
		<title>Csharp/CSharp Tutorial/GUI Windows Forms/Print PrintDocument - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FCSharp_Tutorial%2FGUI_Windows_Forms%2FPrint_PrintDocument"/>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/GUI_Windows_Forms/Print_PrintDocument&amp;action=history"/>
		<updated>2026-04-30T02:21:04Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/GUI_Windows_Forms/Print_PrintDocument&amp;diff=5455&amp;oldid=prev</id>
		<title> в 15:31, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/GUI_Windows_Forms/Print_PrintDocument&amp;diff=5455&amp;oldid=prev"/>
				<updated>2010-05-26T15:31:53Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 15:31, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/GUI_Windows_Forms/Print_PrintDocument&amp;diff=5456&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/GUI_Windows_Forms/Print_PrintDocument&amp;diff=5456&amp;oldid=prev"/>
				<updated>2010-05-26T12:15:34Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Basic Printing==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.Drawing.Printing;&lt;br /&gt;
using System.Drawing;&lt;br /&gt;
  class PrintSample&lt;br /&gt;
  {&lt;br /&gt;
    [STAThread]&lt;br /&gt;
    static void Main(string[] args)&lt;br /&gt;
    {&lt;br /&gt;
      PrintSample oSample = new PrintSample();&lt;br /&gt;
      oSample.RunSample();&lt;br /&gt;
    }&lt;br /&gt;
    public void RunSample()&lt;br /&gt;
    {&lt;br /&gt;
        PrintDocument pd = new PrintDocument(); &lt;br /&gt;
      pd.PrintPage += new PrintPageEventHandler(this.PrintPageEvent);&lt;br /&gt;
      pd.Print();&lt;br /&gt;
    }&lt;br /&gt;
    private void PrintPageEvent(object sender, PrintPageEventArgs ev) &lt;br /&gt;
    {&lt;br /&gt;
      string strHello = &amp;quot;Hello Printer!&amp;quot;;&lt;br /&gt;
      Font oFont = new Font(&amp;quot;Arial&amp;quot;,10);&lt;br /&gt;
      Rectangle marginRect = ev.MarginBounds;&lt;br /&gt;
      ev.Graphics.DrawRectangle(new Pen(System.Drawing.Color.Black),marginRect);&lt;br /&gt;
      ev.Graphics.DrawString(strHello,oFont,new SolidBrush(System.Drawing.Color.Blue),&lt;br /&gt;
        (ev.PageBounds.Right/2), ev.PageBounds.Bottom/2);&lt;br /&gt;
    }&lt;br /&gt;
  }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Multi Page Print==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.Drawing;&lt;br /&gt;
using System.Windows.Forms;&lt;br /&gt;
using System.Drawing.Printing;&lt;br /&gt;
public class PrintDocumentSubClass : Form&lt;br /&gt;
{&lt;br /&gt;
    public PrintDocumentSubClass()&lt;br /&gt;
    {&lt;br /&gt;
        this.cmdPrint = new System.Windows.Forms.Button();&lt;br /&gt;
        this.SuspendLayout();&lt;br /&gt;
        // &lt;br /&gt;
        this.cmdPrint.Location = new System.Drawing.Point(109, 122);&lt;br /&gt;
        this.cmdPrint.Size = new System.Drawing.Size(75, 23);&lt;br /&gt;
        this.cmdPrint.Text = &amp;quot;Print&amp;quot;;&lt;br /&gt;
        this.cmdPrint.UseVisualStyleBackColor = true;&lt;br /&gt;
        this.cmdPrint.Click += new System.EventHandler(this.cmdPrint_Click);&lt;br /&gt;
        // &lt;br /&gt;
        this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);&lt;br /&gt;
        this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;&lt;br /&gt;
        this.ClientSize = new System.Drawing.Size(278, 259);&lt;br /&gt;
        this.Controls.Add(this.cmdPrint);&lt;br /&gt;
        this.Text = &amp;quot;Multi Page Print&amp;quot;;&lt;br /&gt;
        this.ResumeLayout(false);&lt;br /&gt;
    }&lt;br /&gt;
    private void cmdPrint_Click(object sender, EventArgs e)&lt;br /&gt;
    {&lt;br /&gt;
        PrintDocument doc = new TextDocument();&lt;br /&gt;
        doc.PrintPage += this.Doc_PrintPage;&lt;br /&gt;
        PrintDialog dlgSettings = new PrintDialog();&lt;br /&gt;
        dlgSettings.Document = doc;&lt;br /&gt;
        if (dlgSettings.ShowDialog() == DialogResult.OK)&lt;br /&gt;
        {&lt;br /&gt;
            doc.Print();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    private void Doc_PrintPage(object sender, PrintPageEventArgs e)&lt;br /&gt;
    {&lt;br /&gt;
        TextDocument doc = (TextDocument)sender;&lt;br /&gt;
        Font font = new Font(&amp;quot;Arial&amp;quot;, 10);&lt;br /&gt;
        &lt;br /&gt;
        float lineHeight = font.GetHeight(e.Graphics);&lt;br /&gt;
        float x = e.MarginBounds.Left;&lt;br /&gt;
        float y = e.MarginBounds.Top;&lt;br /&gt;
        doc.PageNumber += 1;&lt;br /&gt;
        while ((y + lineHeight) &amp;lt; e.MarginBounds.Bottom &amp;amp;&amp;amp; doc.Offset &amp;lt;= doc.Text.GetUpperBound(0))&lt;br /&gt;
        {&lt;br /&gt;
            e.Graphics.DrawString(doc.Text[doc.Offset], font,Brushes.Black, x, y);&lt;br /&gt;
            doc.Offset += 1;&lt;br /&gt;
            y += lineHeight;&lt;br /&gt;
        }&lt;br /&gt;
        if (doc.Offset &amp;lt; doc.Text.GetUpperBound(0))&lt;br /&gt;
        {&lt;br /&gt;
            e.HasMorePages = true;&lt;br /&gt;
        } else {&lt;br /&gt;
            doc.Offset = 0;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
    [STAThread]&lt;br /&gt;
    static void Main()&lt;br /&gt;
    {&lt;br /&gt;
        Application.EnableVisualStyles();&lt;br /&gt;
        Application.SetCompatibleTextRenderingDefault(false);&lt;br /&gt;
        Application.Run(new PrintDocumentSubClass());&lt;br /&gt;
    }&lt;br /&gt;
    private System.Windows.Forms.Button cmdPrint;&lt;br /&gt;
}&lt;br /&gt;
class TextDocument : PrintDocument{&lt;br /&gt;
    private string[] text;&lt;br /&gt;
    public string[] Text;&lt;br /&gt;
    public int PageNumber;&lt;br /&gt;
    public int Offset;&lt;br /&gt;
    &lt;br /&gt;
    public TextDocument()&lt;br /&gt;
    {&lt;br /&gt;
        this.Text = new string[100];&lt;br /&gt;
        for (int i = 0; i &amp;lt; 100; i++)&lt;br /&gt;
        {&lt;br /&gt;
            this.Text[i] += &amp;quot;string Text &amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Print a paragraph==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.Drawing;&lt;br /&gt;
using System.Windows.Forms;&lt;br /&gt;
using System.Drawing.Printing;&lt;br /&gt;
public class PrintParagraph : Form&lt;br /&gt;
{&lt;br /&gt;
    public PrintParagraph()&lt;br /&gt;
    {&lt;br /&gt;
        this.cmdPrint = new System.Windows.Forms.Button();&lt;br /&gt;
        this.SuspendLayout();&lt;br /&gt;
        this.cmdPrint.Location = new System.Drawing.Point(109, 122);&lt;br /&gt;
        this.cmdPrint.Size = new System.Drawing.Size(75, 23);&lt;br /&gt;
        this.cmdPrint.Text = &amp;quot;Print&amp;quot;;&lt;br /&gt;
        this.cmdPrint.UseVisualStyleBackColor = true;&lt;br /&gt;
        this.cmdPrint.Click += new System.EventHandler(this.cmdPrint_Click);&lt;br /&gt;
        this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);&lt;br /&gt;
        this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;&lt;br /&gt;
        this.ClientSize = new System.Drawing.Size(282, 259);&lt;br /&gt;
        this.Controls.Add(this.cmdPrint);&lt;br /&gt;
        this.Text = &amp;quot;Wrapped Print&amp;quot;;&lt;br /&gt;
        this.ResumeLayout(false);&lt;br /&gt;
    }&lt;br /&gt;
    private void cmdPrint_Click(object sender, EventArgs e)&lt;br /&gt;
    {&lt;br /&gt;
        string text = &amp;quot;a paragraph&amp;quot;;&lt;br /&gt;
        PrintDocument doc = new ParagraphDocument(text);&lt;br /&gt;
        doc.PrintPage += new PrintPageEventHandler(this.Doc_PrintPage);&lt;br /&gt;
        PrintDialog dlgSettings = new PrintDialog();&lt;br /&gt;
        dlgSettings.Document = doc;&lt;br /&gt;
        if (dlgSettings.ShowDialog() == DialogResult.OK)&lt;br /&gt;
        {&lt;br /&gt;
            doc.Print();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    private void Doc_PrintPage(object sender, PrintPageEventArgs e)&lt;br /&gt;
    {&lt;br /&gt;
        ParagraphDocument doc = (ParagraphDocument)sender;&lt;br /&gt;
        Font font = new Font(&amp;quot;Arial&amp;quot;, 15);&lt;br /&gt;
        e.Graphics.DrawString(doc.Text, font, Brushes.Black,&lt;br /&gt;
               e.MarginBounds, StringFormat.GenericDefault);&lt;br /&gt;
    }&lt;br /&gt;
    [STAThread]&lt;br /&gt;
    static void Main()&lt;br /&gt;
    {&lt;br /&gt;
        Application.EnableVisualStyles();&lt;br /&gt;
        Application.SetCompatibleTextRenderingDefault(false);&lt;br /&gt;
        Application.Run(new PrintParagraph());&lt;br /&gt;
    }&lt;br /&gt;
    private System.Windows.Forms.Button cmdPrint;&lt;br /&gt;
    &lt;br /&gt;
}&lt;br /&gt;
public class ParagraphDocument : PrintDocument&lt;br /&gt;
{&lt;br /&gt;
    public string Text;&lt;br /&gt;
    public ParagraphDocument(string text)&lt;br /&gt;
    {&lt;br /&gt;
        this.Text = text;&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Print BMP image==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.Drawing;&lt;br /&gt;
using System.Windows.Forms;&lt;br /&gt;
using System.Drawing.Printing;&lt;br /&gt;
public class PrintDialogPrint : Form&lt;br /&gt;
{&lt;br /&gt;
    public PrintDialogPrint()&lt;br /&gt;
    {&lt;br /&gt;
        this.cmdPrint = new System.Windows.Forms.Button();&lt;br /&gt;
        this.SuspendLayout();&lt;br /&gt;
        // &lt;br /&gt;
        this.cmdPrint.Location = new System.Drawing.Point(109, 122);&lt;br /&gt;
        this.cmdPrint.Size = new System.Drawing.Size(75, 23);&lt;br /&gt;
        this.cmdPrint.Text = &amp;quot;Print&amp;quot;;&lt;br /&gt;
        this.cmdPrint.UseVisualStyleBackColor = true;&lt;br /&gt;
        this.cmdPrint.Click += new System.EventHandler(this.cmdPrint_Click);&lt;br /&gt;
        // &lt;br /&gt;
        this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);&lt;br /&gt;
        this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;&lt;br /&gt;
        this.ClientSize = new System.Drawing.Size(272, 260);&lt;br /&gt;
        this.Controls.Add(this.cmdPrint);&lt;br /&gt;
        this.Text = &amp;quot;Simple Print&amp;quot;;&lt;br /&gt;
        this.ResumeLayout(false);&lt;br /&gt;
    }&lt;br /&gt;
    private void cmdPrint_Click(object sender, EventArgs e)&lt;br /&gt;
    {&lt;br /&gt;
        PrintDocument doc = new PrintDocument();&lt;br /&gt;
        doc.PrintPage += this.Doc_PrintPage;&lt;br /&gt;
        PrintDialog dlgSettings = new PrintDialog();&lt;br /&gt;
        dlgSettings.Document = doc;&lt;br /&gt;
        if (dlgSettings.ShowDialog() == DialogResult.OK)&lt;br /&gt;
        {&lt;br /&gt;
            doc.Print();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    private void Doc_PrintPage(object sender, PrintPageEventArgs e)&lt;br /&gt;
    {&lt;br /&gt;
        Font font = new Font(&amp;quot;Arial&amp;quot;, 30);&lt;br /&gt;
        &lt;br /&gt;
        float x = e.MarginBounds.Left;&lt;br /&gt;
        float y = e.MarginBounds.Top;&lt;br /&gt;
        float lineHeight = font.GetHeight(e.Graphics);&lt;br /&gt;
        for (int i = 0; i &amp;lt; 5; i++)&lt;br /&gt;
        {&lt;br /&gt;
            e.Graphics.DrawString(&amp;quot;This is line &amp;quot; + i.ToString(),font, Brushes.Black, x, y);&lt;br /&gt;
            y += lineHeight;&lt;br /&gt;
        }&lt;br /&gt;
        y += lineHeight;&lt;br /&gt;
        e.Graphics.DrawImage(Image.FromFile(&amp;quot;c:\\YourFile.bmp&amp;quot;), x, y);&lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
    [STAThread]&lt;br /&gt;
    static void Main()&lt;br /&gt;
    {&lt;br /&gt;
        Application.EnableVisualStyles();&lt;br /&gt;
        Application.SetCompatibleTextRenderingDefault(false);&lt;br /&gt;
        Application.Run(new PrintDialogPrint());&lt;br /&gt;
    }&lt;br /&gt;
    private System.Windows.Forms.Button cmdPrint;&lt;br /&gt;
    &lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==PrintDocument: DocumentName, PrintPage, Print==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.Drawing;&lt;br /&gt;
using System.Drawing.Printing;&lt;br /&gt;
using System.Windows.Forms;&lt;br /&gt;
   &lt;br /&gt;
class HelloPrinter: Form&lt;br /&gt;
{&lt;br /&gt;
     public static void Main()&lt;br /&gt;
     {&lt;br /&gt;
          Application.Run(new HelloPrinter());&lt;br /&gt;
     }&lt;br /&gt;
     protected override void OnPaint(PaintEventArgs pea)&lt;br /&gt;
     {&lt;br /&gt;
          Graphics     grfx   = pea.Graphics;&lt;br /&gt;
          StringFormat strfmt = new StringFormat();&lt;br /&gt;
          grfx.DrawString(&amp;quot;Click to print&amp;quot;, Font, new SolidBrush(ForeColor),ClientRectangle, strfmt);&lt;br /&gt;
     }&lt;br /&gt;
     protected override void OnClick(EventArgs ea)&lt;br /&gt;
     {&lt;br /&gt;
          PrintDocument prndoc = new PrintDocument();&lt;br /&gt;
   &lt;br /&gt;
          prndoc.DocumentName = Text;&lt;br /&gt;
          prndoc.PrintPage += new PrintPageEventHandler(PrintDocumentOnPrintPage);&lt;br /&gt;
          prndoc.Print();&lt;br /&gt;
     }&lt;br /&gt;
     void PrintDocumentOnPrintPage(object obj, PrintPageEventArgs ppea)&lt;br /&gt;
     {&lt;br /&gt;
          Graphics grfx = ppea.Graphics;&lt;br /&gt;
          grfx.DrawString(Text, Font, Brushes.Black, 0, 0);&lt;br /&gt;
          SizeF sizef = grfx.MeasureString(Text, Font);&lt;br /&gt;
          grfx.DrawLine(Pens.Black, sizef.ToPointF(), grfx.VisibleClipBounds.Size.ToPointF());&lt;br /&gt;
     }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Print PageSettings Metrics==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.ruponentModel;&lt;br /&gt;
using System.Data;&lt;br /&gt;
using System.Drawing;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Windows.Forms;&lt;br /&gt;
using System.Drawing.Printing;&lt;br /&gt;
&lt;br /&gt;
public class Form1 : Form {&lt;br /&gt;
    private Font mainTextFont = new Font(&amp;quot;Times New Roman&amp;quot;, 14);&lt;br /&gt;
    private Font subTextFont = new Font(&amp;quot;Times New Roman&amp;quot;, 12);&lt;br /&gt;
    private PageSettings storedPageSettings;&lt;br /&gt;
    public Form1() {&lt;br /&gt;
        InitializeComponent();&lt;br /&gt;
    }&lt;br /&gt;
    private void PaintDocument(Graphics g) {&lt;br /&gt;
        g.PageUnit = GraphicsUnit.Point;&lt;br /&gt;
        g.DrawString(&amp;quot;Simple Printing Sample&amp;quot;,&lt;br /&gt;
                     this.mainTextFont,&lt;br /&gt;
                     Brushes.Black,&lt;br /&gt;
                     new Rectangle(10, 20, 180, 30));&lt;br /&gt;
        g.DrawRectangle(Pens.Blue,&lt;br /&gt;
                        new Rectangle(new Point(10, 100), new Size(100, 50)));&lt;br /&gt;
    }&lt;br /&gt;
    private void Form1_Paint(object sender, PaintEventArgs e) {&lt;br /&gt;
        Graphics g = e.Graphics;&lt;br /&gt;
        PaintDocument(g);&lt;br /&gt;
    }&lt;br /&gt;
    private void menuFilePageSetup_Click(object sender, EventArgs e) {&lt;br /&gt;
        PageSetupDialog psDlg = new PageSetupDialog();&lt;br /&gt;
        if (this.storedPageSettings == null)&lt;br /&gt;
            this.storedPageSettings = new PageSettings();&lt;br /&gt;
        psDlg.PageSettings = this.storedPageSettings;&lt;br /&gt;
        psDlg.ShowDialog();&lt;br /&gt;
    }&lt;br /&gt;
    private void WriteMetricsToConsole(PrintPageEventArgs ev) {&lt;br /&gt;
        Graphics g = ev.Graphics;&lt;br /&gt;
        Console.WriteLine(&amp;quot;ev.PageSettings.PaperSize: &amp;quot; + ev.PageSettings.PaperSize);&lt;br /&gt;
        Console.WriteLine(&amp;quot;ev.PageSettings.PrinterResolution: &amp;quot; + ev.PageSettings.PrinterResolution);&lt;br /&gt;
        Console.WriteLine(&amp;quot;ev.PageSettings.PrinterSettings.LandscapeAngle: &amp;quot; + ev.PageSettings.PrinterSettings.LandscapeAngle);&lt;br /&gt;
        Console.WriteLine(&amp;quot;ev.PageSettings.Bounds: &amp;quot; + ev.PageSettings.Bounds);&lt;br /&gt;
        Console.WriteLine(&amp;quot;ev.PageBounds: &amp;quot; + ev.PageBounds);&lt;br /&gt;
        Console.WriteLine(&amp;quot;ev.PageSettings.Margins: &amp;quot; + ev.PageSettings.Margins);&lt;br /&gt;
        Console.WriteLine(&amp;quot;ev.MarginBounds: &amp;quot; + ev.MarginBounds);&lt;br /&gt;
        Console.WriteLine(&amp;quot;Horizontal resolution: &amp;quot; + g.DpiX);&lt;br /&gt;
        Console.WriteLine(&amp;quot;Vertical resolution: &amp;quot; + g.DpiY);&lt;br /&gt;
        g.SetClip(ev.PageBounds);&lt;br /&gt;
        Console.WriteLine(&amp;quot;g.VisibleClipBounds: &amp;quot; + g.VisibleClipBounds);&lt;br /&gt;
        SizeF drawingSurfaceSize = new SizeF( g.VisibleClipBounds.Width * g.DpiX / 100,g.VisibleClipBounds.Height * g.DpiY / 100);&lt;br /&gt;
        Console.WriteLine(&amp;quot;Drawing Surface Size in Pixels: &amp;quot; + drawingSurfaceSize);&lt;br /&gt;
    }&lt;br /&gt;
    protected void PrintPageEventHandler(Object obj, PrintPageEventArgs ev) {&lt;br /&gt;
        WriteMetricsToConsole(ev);&lt;br /&gt;
        Graphics g = ev.Graphics;&lt;br /&gt;
        PaintDocument(g);&lt;br /&gt;
        ev.HasMorePages = false;&lt;br /&gt;
    }&lt;br /&gt;
    private void menuFilePrint_Click(object sender, EventArgs e) {&lt;br /&gt;
        PrintDocument pd = new PrintDocument();&lt;br /&gt;
        pd.PrintPage += new PrintPageEventHandler(this.PrintPageEventHandler);&lt;br /&gt;
        if (this.storedPageSettings != null)&lt;br /&gt;
            pd.DefaultPageSettings = this.storedPageSettings;&lt;br /&gt;
        PrintDialog dlg = new PrintDialog();&lt;br /&gt;
        dlg.Document = pd;&lt;br /&gt;
        DialogResult result = dlg.ShowDialog();&lt;br /&gt;
        if (result == System.Windows.Forms.DialogResult.OK)&lt;br /&gt;
            pd.Print();&lt;br /&gt;
    }&lt;br /&gt;
    private void menuFilePrintPreview_Click(object sender, EventArgs e) {&lt;br /&gt;
        PrintDocument pd = new PrintDocument();&lt;br /&gt;
        pd.PrintPage += new PrintPageEventHandler(this.PrintPageEventHandler);&lt;br /&gt;
        if (this.storedPageSettings != null)&lt;br /&gt;
            pd.DefaultPageSettings = this.storedPageSettings;&lt;br /&gt;
        PrintPreviewDialog dlg = new PrintPreviewDialog();&lt;br /&gt;
        dlg.Document = pd;&lt;br /&gt;
        dlg.ShowDialog();&lt;br /&gt;
    }&lt;br /&gt;
    private void InitializeComponent() {&lt;br /&gt;
        this.menuStrip1 = new System.Windows.Forms.MenuStrip();&lt;br /&gt;
        this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();&lt;br /&gt;
        this.menuFilePageSetup = new System.Windows.Forms.ToolStripMenuItem();&lt;br /&gt;
        this.menuFilePrintPreview = new System.Windows.Forms.ToolStripMenuItem();&lt;br /&gt;
        this.menuFilePrint = new System.Windows.Forms.ToolStripMenuItem();&lt;br /&gt;
        this.menuStrip1.SuspendLayout();&lt;br /&gt;
        this.SuspendLayout();&lt;br /&gt;
        this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {&lt;br /&gt;
            this.fileToolStripMenuItem});&lt;br /&gt;
        this.menuStrip1.Location = new System.Drawing.Point(0, 0);&lt;br /&gt;
        this.menuStrip1.Size = new System.Drawing.Size(292, 25);&lt;br /&gt;
        this.menuStrip1.Text = &amp;quot;menuStrip1&amp;quot;;&lt;br /&gt;
        this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {&lt;br /&gt;
            this.menuFilePageSetup,&lt;br /&gt;
            this.menuFilePrintPreview,&lt;br /&gt;
            this.menuFilePrint});&lt;br /&gt;
        this.fileToolStripMenuItem.Text = &amp;quot;File&amp;quot;;&lt;br /&gt;
        this.menuFilePageSetup.Text = &amp;quot;Page Setup&amp;quot;;&lt;br /&gt;
        this.menuFilePageSetup.Click += new System.EventHandler(this.menuFilePageSetup_Click);&lt;br /&gt;
        this.menuFilePrintPreview.Text = &amp;quot;Print Preview&amp;quot;;&lt;br /&gt;
        this.menuFilePrintPreview.Click += new System.EventHandler(this.menuFilePrintPreview_Click);&lt;br /&gt;
        this.menuFilePrint.Text = &amp;quot;Print&amp;quot;;&lt;br /&gt;
        this.menuFilePrint.Click += new System.EventHandler(this.menuFilePrint_Click);&lt;br /&gt;
        this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);&lt;br /&gt;
        this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;&lt;br /&gt;
        this.BackColor = System.Drawing.SystemColors.Window;&lt;br /&gt;
        this.ClientSize = new System.Drawing.Size(292, 268);&lt;br /&gt;
        this.Controls.Add(this.menuStrip1);&lt;br /&gt;
        this.MainMenuStrip = this.menuStrip1;&lt;br /&gt;
        this.Text = &amp;quot;SimplePrintingExample&amp;quot;;&lt;br /&gt;
        this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint);&lt;br /&gt;
        this.menuStrip1.ResumeLayout(false);&lt;br /&gt;
        this.ResumeLayout(false);&lt;br /&gt;
        this.PerformLayout();&lt;br /&gt;
    }&lt;br /&gt;
    private System.Windows.Forms.MenuStrip menuStrip1;&lt;br /&gt;
    private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;&lt;br /&gt;
    private System.Windows.Forms.ToolStripMenuItem menuFilePageSetup;&lt;br /&gt;
    private System.Windows.Forms.ToolStripMenuItem menuFilePrintPreview;&lt;br /&gt;
    private System.Windows.Forms.ToolStripMenuItem menuFilePrint;&lt;br /&gt;
    [STAThread]&lt;br /&gt;
    static void Main() {&lt;br /&gt;
        Application.Run(new Form1());&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Print With Margins==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.Drawing;&lt;br /&gt;
using System.Drawing.Printing;&lt;br /&gt;
using System.Windows.Forms;&lt;br /&gt;
class PrinterSelectionDialog: Form&lt;br /&gt;
{&lt;br /&gt;
     ComboBox combo;&lt;br /&gt;
   &lt;br /&gt;
     public PrinterSelectionDialog()&lt;br /&gt;
     {&lt;br /&gt;
          Label label    = new Label();&lt;br /&gt;
          label.Parent   = this;&lt;br /&gt;
          label.Text     = &amp;quot;Printer:&amp;quot;;&lt;br /&gt;
          label.Location = new Point(8, 8);&lt;br /&gt;
          label.Size     = new Size(40, 8);&lt;br /&gt;
   &lt;br /&gt;
          combo = new ComboBox();&lt;br /&gt;
          combo.Parent   = this;&lt;br /&gt;
          combo.DropDownStyle = ComboBoxStyle.DropDownList;&lt;br /&gt;
          combo.Location = new Point(48, 8);&lt;br /&gt;
          combo.Size     = new Size(144, 8);&lt;br /&gt;
   &lt;br /&gt;
          foreach (string str in PrinterSettings.InstalledPrinters)&lt;br /&gt;
               combo.Items.Add(str);&lt;br /&gt;
   &lt;br /&gt;
          Button btn   = new Button();&lt;br /&gt;
          btn.Parent   = this;&lt;br /&gt;
          btn.Text     = &amp;quot;OK&amp;quot;;&lt;br /&gt;
          btn.Location = new Point(40, 32);&lt;br /&gt;
          btn.Size     = new Size(40, 16);&lt;br /&gt;
          btn.DialogResult = DialogResult.OK;&lt;br /&gt;
          AcceptButton = btn;&lt;br /&gt;
   &lt;br /&gt;
          btn  = new Button();&lt;br /&gt;
          btn.Parent = this;&lt;br /&gt;
          btn.Text = &amp;quot;Cancel&amp;quot;;&lt;br /&gt;
          btn.Location = new Point(120, 32);&lt;br /&gt;
          btn.Size   = new Size(40, 16);&lt;br /&gt;
          btn.DialogResult = DialogResult.Cancel;&lt;br /&gt;
   &lt;br /&gt;
          CancelButton = btn;&lt;br /&gt;
   &lt;br /&gt;
          ClientSize = new Size(200, 56);&lt;br /&gt;
          AutoScaleBaseSize = new Size(4, 8);&lt;br /&gt;
     }&lt;br /&gt;
     public string PrinterName&lt;br /&gt;
     {&lt;br /&gt;
          set { combo.SelectedItem = value; }&lt;br /&gt;
          get { return (string) combo.SelectedItem; }&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
class PrintWithMargins: Form&lt;br /&gt;
{&lt;br /&gt;
     public static void Main()&lt;br /&gt;
     {&lt;br /&gt;
          Application.Run(new PrintWithMargins());&lt;br /&gt;
     }&lt;br /&gt;
     public PrintWithMargins()&lt;br /&gt;
     {&lt;br /&gt;
          Text = &amp;quot;Print with Margins&amp;quot;;&lt;br /&gt;
          Menu = new MainMenu();&lt;br /&gt;
          Menu.MenuItems.Add(&amp;quot;&amp;amp;File&amp;quot;);&lt;br /&gt;
          Menu.MenuItems[0].MenuItems.Add(&amp;quot;&amp;amp;Print...&amp;quot;, &lt;br /&gt;
                                   new EventHandler(MenuFilePrintOnClick));&lt;br /&gt;
     }&lt;br /&gt;
     void MenuFilePrintOnClick(object obj, EventArgs ea)&lt;br /&gt;
     {&lt;br /&gt;
          PrintDocument prndoc = new PrintDocument();&lt;br /&gt;
   &lt;br /&gt;
          PrinterSelectionDialog dlg = new PrinterSelectionDialog();&lt;br /&gt;
          dlg.PrinterName = prndoc.PrinterSettings.PrinterName;&lt;br /&gt;
   &lt;br /&gt;
          if (dlg.ShowDialog() != DialogResult.OK)&lt;br /&gt;
               return;&lt;br /&gt;
   &lt;br /&gt;
          prndoc.PrinterSettings.PrinterName = dlg.PrinterName;&lt;br /&gt;
   &lt;br /&gt;
          prndoc.DocumentName = Text;&lt;br /&gt;
          prndoc.PrintPage += new PrintPageEventHandler(OnPrintPage);&lt;br /&gt;
          prndoc.Print();&lt;br /&gt;
     }&lt;br /&gt;
     void OnPrintPage(object obj, PrintPageEventArgs ppea)&lt;br /&gt;
     {&lt;br /&gt;
          Graphics   grfx  = ppea.Graphics;&lt;br /&gt;
          RectangleF rectf = new RectangleF(&lt;br /&gt;
               ppea.MarginBounds.Left - &lt;br /&gt;
               (ppea.PageBounds.Width - grfx.VisibleClipBounds.Width) / 2,&lt;br /&gt;
               ppea.MarginBounds.Top - &lt;br /&gt;
               (ppea.PageBounds.Height - grfx.VisibleClipBounds.Height) / 2,&lt;br /&gt;
               ppea.MarginBounds.Width,&lt;br /&gt;
               ppea.MarginBounds.Height);&lt;br /&gt;
   &lt;br /&gt;
          grfx.DrawRectangle(Pens.Black, rectf.X, rectf.Y, &lt;br /&gt;
                                         rectf.Width, rectf.Height);&lt;br /&gt;
   &lt;br /&gt;
          grfx.DrawLine(Pens.Black, rectf.Left, rectf.Top, &lt;br /&gt;
                                    rectf.Right, rectf.Bottom);&lt;br /&gt;
   &lt;br /&gt;
          grfx.DrawLine(Pens.Black, rectf.Right, rectf.Top, &lt;br /&gt;
                                    rectf.Left, rectf.Bottom);&lt;br /&gt;
     }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Subclass PrintDocument==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.Drawing;&lt;br /&gt;
using System.Windows.Forms;&lt;br /&gt;
using System.Drawing.Printing;&lt;br /&gt;
public class PrintDocumentSubClass : Form&lt;br /&gt;
{&lt;br /&gt;
    public PrintDocumentSubClass()&lt;br /&gt;
    {&lt;br /&gt;
        this.cmdPrint = new System.Windows.Forms.Button();&lt;br /&gt;
        this.SuspendLayout();&lt;br /&gt;
        // &lt;br /&gt;
        this.cmdPrint.Location = new System.Drawing.Point(109, 122);&lt;br /&gt;
        this.cmdPrint.Size = new System.Drawing.Size(75, 23);&lt;br /&gt;
        this.cmdPrint.Text = &amp;quot;Print&amp;quot;;&lt;br /&gt;
        this.cmdPrint.UseVisualStyleBackColor = true;&lt;br /&gt;
        this.cmdPrint.Click += new System.EventHandler(this.cmdPrint_Click);&lt;br /&gt;
        // &lt;br /&gt;
        this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);&lt;br /&gt;
        this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;&lt;br /&gt;
        this.ClientSize = new System.Drawing.Size(278, 259);&lt;br /&gt;
        this.Controls.Add(this.cmdPrint);&lt;br /&gt;
        this.Text = &amp;quot;Multi Page Print&amp;quot;;&lt;br /&gt;
        this.ResumeLayout(false);&lt;br /&gt;
    }&lt;br /&gt;
    private void cmdPrint_Click(object sender, EventArgs e)&lt;br /&gt;
    {&lt;br /&gt;
        PrintDocument doc = new TextDocument();&lt;br /&gt;
        doc.PrintPage += this.Doc_PrintPage;&lt;br /&gt;
        PrintDialog dlgSettings = new PrintDialog();&lt;br /&gt;
        dlgSettings.Document = doc;&lt;br /&gt;
        if (dlgSettings.ShowDialog() == DialogResult.OK)&lt;br /&gt;
        {&lt;br /&gt;
            doc.Print();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    private void Doc_PrintPage(object sender, PrintPageEventArgs e)&lt;br /&gt;
    {&lt;br /&gt;
        TextDocument doc = (TextDocument)sender;&lt;br /&gt;
        Font font = new Font(&amp;quot;Arial&amp;quot;, 10);&lt;br /&gt;
        &lt;br /&gt;
        float lineHeight = font.GetHeight(e.Graphics);&lt;br /&gt;
        float x = e.MarginBounds.Left;&lt;br /&gt;
        float y = e.MarginBounds.Top;&lt;br /&gt;
        doc.PageNumber += 1;&lt;br /&gt;
        while ((y + lineHeight) &amp;lt; e.MarginBounds.Bottom &amp;amp;&amp;amp; doc.Offset &amp;lt;= doc.Text.GetUpperBound(0))&lt;br /&gt;
        {&lt;br /&gt;
            e.Graphics.DrawString(doc.Text[doc.Offset], font,Brushes.Black, x, y);&lt;br /&gt;
            doc.Offset += 1;&lt;br /&gt;
            y += lineHeight;&lt;br /&gt;
        }&lt;br /&gt;
        if (doc.Offset &amp;lt; doc.Text.GetUpperBound(0))&lt;br /&gt;
        {&lt;br /&gt;
            e.HasMorePages = true;&lt;br /&gt;
        } else {&lt;br /&gt;
            doc.Offset = 0;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
    [STAThread]&lt;br /&gt;
    static void Main()&lt;br /&gt;
    {&lt;br /&gt;
        Application.EnableVisualStyles();&lt;br /&gt;
        Application.SetCompatibleTextRenderingDefault(false);&lt;br /&gt;
        Application.Run(new PrintDocumentSubClass());&lt;br /&gt;
    }&lt;br /&gt;
    private System.Windows.Forms.Button cmdPrint;&lt;br /&gt;
}&lt;br /&gt;
class TextDocument : PrintDocument{&lt;br /&gt;
    private string[] text;&lt;br /&gt;
    public string[] Text;&lt;br /&gt;
    public int PageNumber;&lt;br /&gt;
    public int Offset;&lt;br /&gt;
    &lt;br /&gt;
    public TextDocument()&lt;br /&gt;
    {&lt;br /&gt;
        this.Text = new string[100];&lt;br /&gt;
        for (int i = 0; i &amp;lt; 100; i++)&lt;br /&gt;
        {&lt;br /&gt;
            this.Text[i] += &amp;quot;string Text &amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==The print preview application.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.Drawing;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
using System.ruponentModel;&lt;br /&gt;
using System.Windows.Forms;&lt;br /&gt;
using System.Data;&lt;br /&gt;
&lt;br /&gt;
public class Form1 : System.Windows.Forms.Form {&lt;br /&gt;
    private System.Windows.Forms.Button button1;&lt;br /&gt;
    private System.ruponentModel.Container components = null;&lt;br /&gt;
    private System.Drawing.Printing.PrintDocument ThePrintDocument = null;&lt;br /&gt;
    private System.IO.StringReader myStringReader = null;&lt;br /&gt;
    public Form1() {&lt;br /&gt;
        ThePrintDocument = new System.Drawing.Printing.PrintDocument();&lt;br /&gt;
        this.button1 = new System.Windows.Forms.Button();&lt;br /&gt;
        this.button2 = new System.Windows.Forms.Button();&lt;br /&gt;
        this.SuspendLayout();&lt;br /&gt;
        this.button1.Location = new System.Drawing.Point(112, 352);&lt;br /&gt;
        this.button1.Text = &amp;quot;&amp;amp;Preview&amp;quot;;&lt;br /&gt;
        this.button1.Click += new System.EventHandler(this.button1_Click);&lt;br /&gt;
        this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);&lt;br /&gt;
        this.ClientSize = new System.Drawing.Size(512, 397);&lt;br /&gt;
        this.Controls.AddRange(new System.Windows.Forms.Control[] { this.button1 });&lt;br /&gt;
        this.ResumeLayout(false);&lt;br /&gt;
    }&lt;br /&gt;
    [STAThread]&lt;br /&gt;
    static void Main() {&lt;br /&gt;
        Application.Run(new Form1());&lt;br /&gt;
    }&lt;br /&gt;
    protected void PrintPage(object sender,&lt;br /&gt;
        System.Drawing.Printing.PrintPageEventArgs ev) {&lt;br /&gt;
        float linesPerPage = 0;&lt;br /&gt;
        float yPosition = 0;&lt;br /&gt;
        int count = 0;&lt;br /&gt;
        float leftMargin = ev.MarginBounds.Left;&lt;br /&gt;
        float topMargin = ev.MarginBounds.Top;&lt;br /&gt;
        string line = null;&lt;br /&gt;
        Font printFont = this.Font;&lt;br /&gt;
        SolidBrush myBrush = new SolidBrush(Color.Black);&lt;br /&gt;
        linesPerPage = ev.MarginBounds.Height / printFont.GetHeight(ev.Graphics);&lt;br /&gt;
        while (count &amp;lt; linesPerPage &amp;amp;&amp;amp; ((line = myStringReader.ReadLine()) != null)) {&lt;br /&gt;
            yPosition = topMargin + (count * printFont.GetHeight(ev.Graphics));&lt;br /&gt;
            ev.Graphics.DrawString(line, printFont, myBrush, leftMargin, yPosition, new StringFormat());&lt;br /&gt;
            count++;&lt;br /&gt;
        }&lt;br /&gt;
        if (line != null)&lt;br /&gt;
            ev.HasMorePages = true;&lt;br /&gt;
        else&lt;br /&gt;
            ev.HasMorePages = false;&lt;br /&gt;
        myBrush.Dispose();&lt;br /&gt;
    }&lt;br /&gt;
    private void button1_Click(object sender, System.EventArgs e) {&lt;br /&gt;
        ThePrintDocument.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(PrintPage);&lt;br /&gt;
        string strText = &amp;quot;STRING&amp;quot;;&lt;br /&gt;
        myStringReader = new System.IO.StringReader(strText);&lt;br /&gt;
        PrintPreviewDialog printPreviewDialog1 = new PrintPreviewDialog();&lt;br /&gt;
        printPreviewDialog1.Document = this.ThePrintDocument;&lt;br /&gt;
        printPreviewDialog1.ShowDialog();&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==The print process application.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.Drawing;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
using System.ruponentModel;&lt;br /&gt;
using System.Windows.Forms;&lt;br /&gt;
using System.Data;&lt;br /&gt;
public class Form1 : System.Windows.Forms.Form {&lt;br /&gt;
    private System.Windows.Forms.RichTextBox richTextBox1;&lt;br /&gt;
    private System.Windows.Forms.Button button1;&lt;br /&gt;
    private System.Windows.Forms.Button button2;&lt;br /&gt;
    private System.ruponentModel.Container components = null;&lt;br /&gt;
    private System.Windows.Forms.PrintDialog printDialog1;&lt;br /&gt;
    private System.Drawing.Printing.PrintDocument ThePrintDocument = null;&lt;br /&gt;
    private System.IO.StringReader myStringReader = null;&lt;br /&gt;
    public Form1() {&lt;br /&gt;
        ThePrintDocument = new System.Drawing.Printing.PrintDocument();&lt;br /&gt;
        this.richTextBox1 = new System.Windows.Forms.RichTextBox();&lt;br /&gt;
        this.button1 = new System.Windows.Forms.Button();&lt;br /&gt;
        this.button2 = new System.Windows.Forms.Button();&lt;br /&gt;
        this.printDialog1 = new System.Windows.Forms.PrintDialog();&lt;br /&gt;
        this.SuspendLayout();&lt;br /&gt;
        this.richTextBox1.Location = new System.Drawing.Point(72, 16);&lt;br /&gt;
        this.richTextBox1.Size = new System.Drawing.Size(344, 320);&lt;br /&gt;
        this.richTextBox1.Text = &amp;quot;richTextBox1&amp;quot;;&lt;br /&gt;
        this.button1.Location = new System.Drawing.Point(128, 352);&lt;br /&gt;
        this.button1.Text = &amp;quot;&amp;amp;Print&amp;quot;;&lt;br /&gt;
        this.button1.Click += new System.EventHandler(this.button1_Click);&lt;br /&gt;
        this.button2.Location = new System.Drawing.Point(280, 352);&lt;br /&gt;
        this.button2.Text = &amp;quot;&amp;amp;Close&amp;quot;;&lt;br /&gt;
        this.button2.Click += new System.EventHandler(this.button2_Click);&lt;br /&gt;
        this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);&lt;br /&gt;
        this.ClientSize = new System.Drawing.Size(488, 381);&lt;br /&gt;
        this.Controls.AddRange(new System.Windows.Forms.Control[] {&lt;br /&gt;
        this.button2,&lt;br /&gt;
        this.button1,&lt;br /&gt;
        this.richTextBox1});&lt;br /&gt;
        this.ResumeLayout(false);&lt;br /&gt;
    }&lt;br /&gt;
    [STAThread]&lt;br /&gt;
    static void Main() {&lt;br /&gt;
        Application.Run(new Form1());&lt;br /&gt;
    }&lt;br /&gt;
    private void button2_Click(object sender, System.EventArgs e) {&lt;br /&gt;
        Close();&lt;br /&gt;
    }&lt;br /&gt;
    private void button1_Click(object sender, System.EventArgs e) {&lt;br /&gt;
        ThePrintDocument.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(PrintPage);&lt;br /&gt;
        printDialog1.Document = ThePrintDocument;&lt;br /&gt;
        string strText = this.richTextBox1.Text;&lt;br /&gt;
        myStringReader = new System.IO.StringReader(strText);&lt;br /&gt;
        if (printDialog1.ShowDialog() == DialogResult.OK) {&lt;br /&gt;
            this.ThePrintDocument.Print();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    protected void PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs ev) {&lt;br /&gt;
        float linesPerPage = 0;&lt;br /&gt;
        float yPosition = 0;&lt;br /&gt;
        int count = 0;&lt;br /&gt;
        float leftMargin = ev.MarginBounds.Left;&lt;br /&gt;
        float topMargin = ev.MarginBounds.Top;&lt;br /&gt;
        string line = null;&lt;br /&gt;
        Font printFont = this.richTextBox1.Font;&lt;br /&gt;
        SolidBrush myBrush = new SolidBrush(Color.Black);&lt;br /&gt;
        linesPerPage = ev.MarginBounds.Height / printFont.GetHeight(ev.Graphics);&lt;br /&gt;
        while (count &amp;lt; linesPerPage &amp;amp;&amp;amp; ((line = myStringReader.ReadLine()) != null)) {&lt;br /&gt;
            yPosition = topMargin + (count * printFont.GetHeight(ev.Graphics));&lt;br /&gt;
            ev.Graphics.DrawString(line, printFont, myBrush, leftMargin,yPosition, new StringFormat());&lt;br /&gt;
            count++;&lt;br /&gt;
        }&lt;br /&gt;
        if (line != null)&lt;br /&gt;
            ev.HasMorePages = true;&lt;br /&gt;
        else&lt;br /&gt;
            ev.HasMorePages = false;&lt;br /&gt;
        myBrush.Dispose();&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>