当然不行了,你的 int printingRowNumber =1;//记录正在打印的行索引
int pageNumber =0;//需要打印的总页数
int printingPageNumber=0;//当前正在打印的页索引是局部变量,在打印的过程中如果要打印附加页那么这些局部变量重新负值,就是说打印一次附加页就是整个printDocument1_PrintPage 重新运行一边,所以你始终打印的是第一页。
你把上面那些控制数据改成全局变量就可了。
int pageNumber =0;//需要打印的总页数
int printingPageNumber=0;//当前正在打印的页索引是局部变量,在打印的过程中如果要打印附加页那么这些局部变量重新负值,就是说打印一次附加页就是整个printDocument1_PrintPage 重新运行一边,所以你始终打印的是第一页。
你把上面那些控制数据改成全局变量就可了。
解决方案 »
- 某个类的成员对外界可见,对继承的类的内部不可见,怎么声明
- C#菜鸟问题 “ConsoleApplication19.Circle”不会实现接口成员“ConsoleApplication19.IShape.Caculate()”
- SOCKET聊天客户端应该用同步还是异步
- 有关GDI+的使用,将绘图保存为文件的问题,多谢指点
- 关于开源
- C#里除了Namevaluecollections这种可以存储字符串对的数组以外,还有别的类似的吗
- 子类如何使用和子类同名的基类方法?
- c#如何去一个百度坐标点的范围一个里(跪求大神帮忙)
- 有没有这样的函数
- 有关textBox控件中内容的保存
- 可以在B/s的结构中的DataGrid里面设置滚动条吗(很急很急)
- 几个GDI+的问题
printDocument1_PrintPage是一页一页来的
打一页,HasMorePages,再打一页
我把相关控制变量该为全局了,结果还是没有改变,奇怪的很,难道我的printDocument1_PrintPage事件函数中还有其他问题,好郁闷啊
if((gridCtrl.GetCellRect(gridCtrl.GetCell((gridCtrl.rowList.Count-1),0)).Bottom)%(e.MarginBounds.Bottom-e.MarginBounds.Top) != 0)
{
pageNumber +=(gridCtrl.GetCellRect(gridCtrl.GetCell((gridCtrl.rowList.Count-1),0)).Bottom)/(e.MarginBounds.Bottom-e.MarginBounds.Top)+1;
}
else
{
//刚好在某页最后一行打印完行数据
pageNumber +=(gridCtrl.GetCellRect(gridCtrl.GetCell((gridCtrl.rowList.Count-1),0)).Bottom)/(e.MarginBounds.Bottom-e.MarginBounds.Top);
}计算确定要打印的总页数 也应该在 printDocument1_PrintPage 前进行。这样吧,你按照下面的流程来做就没问题一:
在运行 printDocument1_PrintPage 前初始化打印数据,
1: 确认要打多少页 ,记录这个数据。
int pageNumber
2:初始化
int printingRowNumber =1;
int printingPageNumber=0;二:
开始打印printDocument1_PrintPage
1:根据你要打得表格进行控制流程