private void prtDoc_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Font font = txtPage.Font;
Int32 PrintAreaHeight, PrintAreaWidth, marginLeft, marginTop;
PrintAreaHeight = prtDoc.DefaultPageSettings.PaperSize.Height - prtDoc.DefaultPageSettings.Margins.Top - prtDoc.DefaultPageSettings.Margins.Bottom;
PrintAreaWidth = prtDoc.DefaultPageSettings.PaperSize.Width - prtDoc.DefaultPageSettings.Margins.Left - prtDoc.DefaultPageSettings.Margins.Right;
marginLeft = prtDoc.DefaultPageSettings.Margins.Left;
marginTop = prtDoc.DefaultPageSettings.Margins.Top;
if (prtDoc.DefaultPageSettings.Landscape)
{
Int32 intTemp;
intTemp = PrintAreaHeight;
PrintAreaHeight = PrintAreaWidth;
PrintAreaWidth = intTemp;
}
Int32 intLineCount = System.Convert.ToInt32(PrintAreaHeight / font.Height);
RectangleF rectPrintingArea = new RectangleF(marginLeft, marginTop, PrintAreaWidth, PrintAreaHeight);
StringFormat fmt = new StringFormat(StringFormatFlags.LineLimit);
Int32 intLinesFilled;
Int32 intCharsFitted;
e.Graphics.MeasureString(Eclectic.Mid(txtPage.Text, intCurrentChar), font, new SizeF(PrintAreaWidth, PrintAreaHeight), fmt, out intCharsFitted, out intLinesFilled);
e.Graphics.DrawString(Eclectic.Mid(txtPage.Text, intCurrentChar), font, Brushes.Black, rectPrintingArea, fmt);
intCurrentChar += intCharsFitted;
if (intCurrentChar < (txtPage.Text.Length - 1))
{
e.HasMorePages = true;
}
else
{
e.HasMorePages = false;
intCurrentChar = 0;
}
}