e.Graphics.DrawString(txt_chuhuodan.Text, new System.Drawing.Font("宋体",//绘制文本内容 以下内容为发货地址等信息
12), myBrush, 690, 440, sf);
for (int i = 0; i < 30; i++)
{
e.Graphics.DrawLine(mypen, 30, 500 + (i * 50), 790, 500 + (i * 50));
e.Graphics.DrawString("收货日期:", new System.Drawing.Font("宋体",//绘制文本内容 以下内容为发货地址等信息
12), myBrush, 80, 510 + (i * 50), sf);
}
e.HasMorePages = true;
il++;
if (il >=1)
{
e.HasMorePages = false;
}用以上代码打印时,打印出来的三页都是第一页的内容,后面两页的内容打印不出来,预览的时候也是只能看到第一页,怎么才能让打印出来的是连续的三面。谢谢!
12), myBrush, 690, 440, sf);
for (int i = 0; i < 30; i++)
{
e.Graphics.DrawLine(mypen, 30, 500 + (i * 50), 790, 500 + (i * 50));
e.Graphics.DrawString("收货日期:", new System.Drawing.Font("宋体",//绘制文本内容 以下内容为发货地址等信息
12), myBrush, 80, 510 + (i * 50), sf);
}
e.HasMorePages = true;
il++;
if (il >=1)
{
e.HasMorePages = false;
}用以上代码打印时,打印出来的三页都是第一页的内容,后面两页的内容打印不出来,预览的时候也是只能看到第一页,怎么才能让打印出来的是连续的三面。谢谢!
using System.IO;
using System.Drawing.Printing;namespace SimpleEditor
{
public partial class SimpleEditorForm : Form
{
private string filename = "Untitled"; //1、實例化打印文檔
PrintDocument pdDocument = new PrintDocument(); private string[] lines;
private int linesPrinted;
public SimpleEditorForm()
{
InitializeComponent(); //2、訂閱事件 //訂閱PinrtPage事件,用於繪製各個頁內容
pdDocument.PrintPage += new PrintPageEventHandler(OnPrintPage);
//訂閱BeginPrint事件,用於得到被打印的內容
pdDocument.BeginPrint += new PrintEventHandler(pdDocument_BeginPrint);
//訂閱EndPrint事件,用於釋放資源
pdDocument.EndPrint += new PrintEventHandler(pdDocument_EndPrint);
} private void OnFilePrint(object sender, EventArgs e)
{
try
{
//調用打印
pdDocument.Print(); /*
* PrintDocument對象的Print()方法在PrintController類的幫助下,執行PrintPage事件。
*/
}
catch (InvalidPrinterException ex )
{
MessageBox.Show(ex.Message, "Simple Editor", MessageBoxButtons.OK, MessageBoxIcon.Error);
throw;
}
} /// <summary>
/// 3、得到打印內容
/// 每個打印任務衹調用OnBeginPrint()一次。
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void pdDocument_BeginPrint(object sender, PrintEventArgs e)
{
char[] param ={ '\n' };
lines = textBoxEdit.Text.Split(param); int i = 0;
char[] trimParam ={ '\r' };
foreach (string s in lines)
{
lines[i++] = s.TrimEnd(trimParam);
}
}
/// <summary>
/// 4、繪制多個打印頁面
/// printDocument的PrintPage事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnPrintPage(object sender, PrintPageEventArgs e)
{
/*
* 得到TextBox中每行的字符串數組
* \n換行
* \r回車
*/ int x = 20;
int y = 20;
while (linesPrinted<lines.Length)
{
//繪製要打印的頁面
e.Graphics.DrawString(lines[linesPrinted++], new Font("Arial", 10), Brushes.Black, x, y); y += 55; //判斷超過一頁時,允許進行多頁打印
if (y >= e.PageBounds.Height - 80)
{
//允許多頁打印
e.HasMorePages = true; /*
* PrintPageEventArgs類的HaeMorePages屬性為True時,通知控件器,必須再次調用OnPrintPage()方法,打印一個頁面。
* PrintLoopI()有一個用於每個要打印的頁面的序例。如果HasMorePages是False,PrintLoop()就會停止。
*/
return;
}
} linesPrinted = 0;
//繪制完成後,關閉多頁打印功能
e.HasMorePages = false; } /// <summary>
///5、EndPrint事件,釋放資源
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void pdDocument_EndPrint(object sender, PrintEventArgs e)
{
//變量Lines占用和引用的字符串數組,現在釋放
lines = null;
}
}
}