使用PrintDocument如何实现指定页码范围打印
2008-05-19 10:38
627 查看
最近在解决分页打印的问题,发现用.Net Framework1.1的PrintDialog的AllowSelection和AllowSomePages设置PrintDocument的分页打印是不起作用的,google了一下也是这样,于是自己想了个办法,原理是这样的:
PrintDocument在打印时,打印每一页都会触发它的PrintPage事件,在该事件中,进行页码的递增和一个重要参数e.HasMorePages的判断,如果该参数为true,就会继续进行下一页的打印,如果为false,就不会继续进行打印。这样,我们就可以利用这一事件进行打印哪些页面的控制。程序逻辑见注释。
变量说明:
m_startPrintPage,打印的起始页码
m_endPrintPage,打印的终止页码
m_PageIndex:当前打印页码
/**////<summary>
/// PrintDocument的PrintPage事件,同时实现指定页码范围打印
///</summary>
///<param name="sender"></param>
///<param name="e"></param>
private void printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
...{
try
...{
//如果当前打印页小于打印起始页码,就递增一页,直至等于打印起始页码
if (m_startPrintPage>0) ...{
while (m_PageIndex<m_startPrintPage)
...{
m_PageIndex++;
}
}
伪代码:打印内容
//当前打印页加1
m_PageIndex++;
//如果设置了打印页码范围并且当前打印页大于打印终止页码,终止打印,设置e.HasMorePages参数,初始化相关变量
if ((m_startPrintPage>0)&&(m_PageIndex>m_endPrintPage))
...{
e.HasMorePages=false;
m_PageIndex=1;
return;
}
}
catch
...{
//出错处理,终止打印,设置e.HasMorePages参数,初始化相关变量
e.HasMorePages = false;
m_PageIndex = 1;
}
}
PrintDocument在打印时,打印每一页都会触发它的PrintPage事件,在该事件中,进行页码的递增和一个重要参数e.HasMorePages的判断,如果该参数为true,就会继续进行下一页的打印,如果为false,就不会继续进行打印。这样,我们就可以利用这一事件进行打印哪些页面的控制。程序逻辑见注释。
变量说明:
m_startPrintPage,打印的起始页码
m_endPrintPage,打印的终止页码
m_PageIndex:当前打印页码
/**////<summary>
/// PrintDocument的PrintPage事件,同时实现指定页码范围打印
///</summary>
///<param name="sender"></param>
///<param name="e"></param>
private void printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
...{
try
...{
//如果当前打印页小于打印起始页码,就递增一页,直至等于打印起始页码
if (m_startPrintPage>0) ...{
while (m_PageIndex<m_startPrintPage)
...{
m_PageIndex++;
}
}
伪代码:打印内容
//当前打印页加1
m_PageIndex++;
//如果设置了打印页码范围并且当前打印页大于打印终止页码,终止打印,设置e.HasMorePages参数,初始化相关变量
if ((m_startPrintPage>0)&&(m_PageIndex>m_endPrintPage))
...{
e.HasMorePages=false;
m_PageIndex=1;
return;
}
}
catch
...{
//出错处理,终止打印,设置e.HasMorePages参数,初始化相关变量
e.HasMorePages = false;
m_PageIndex = 1;
}
}
相关文章推荐
- C#中使用[GDI+]+PrintDocument实现打印
- C#中使用GDI+与PrintDocument实现打印
- 在C#中实现打印功能(C#中PrintDialog,PrintDocument的使用)
- 在C#中实现打印功能(C#中PrintDialog,PrintDocument的使用)实用的类
- 在C#中实现打印功能(C#中PrintDialog,PrintDocument的使用)
- 在C#中实现打印功能(C#中PrintDialog,PrintDocument的使用)
- 在C#中实现打印功能(C#中PrintDialog,PrintDocument的使用) (转)
- 使用printdocument 实现换行打印
- 在 C# 中实现打印功能(C# 中 PrintDialog,PrintDocument 的使用)
- 在C#中实现打印功能(C#中PrintDialog,PrintDocument的使用)
- 在C#中实现打印功能(C#中PrintDialog,PrintDocument的使用)
- 在C#中实现打印功能(C#中PrintDialog,PrintDocument的使用)
- 在C#中实现打印功能(C#中PrintDialog,PrintDocument的使用)
- C#中使用GDI+与PrintDocument实现打印
- 在C#中实现打印功能(C#中PrintDialog,PrintDocument的使用)
- 在C#中实现打印功能(C#中PrintDialog,PrintDocument的使用)
- 在C#中实现打印功能(C#中PrintDialog,PrintDocument的使用
- 在C#中实现打印功能(C#中PrintDialog,PrintDocument的使用)
- [VB.NET]PrintDocument如何打印水晶报表喔?
- JS 使用 window对象的print方法实现分页打印