您的位置:首页 > 其它

使用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;


}




}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: