前几天,在做的一个项目中,用VS2005+ReportViewer进行报表套打,原来想的很简单,结果在试用过程中出现了很多问题。
刚开始,非常顺利,经测试打印正常,但一试用问题就出现了。
我开发用的机器的系统是win2003,客户的系统是xp,客户在打印时,打印出来的字都是竖的。我就奇怪了,难道这个操作系统还有关系,我又找了一个xp机器,试了试,结果证实确实和操作系统有关,不知道什么原因!
第一个问题就是ReportViewer自带的打印按钮,第一次单击打印后,打印机没反应,第二次打印,打印机才有反应。这个问题非常令人奇怪,我觉得自己的程序没问题,就到网上搜了搜,结果发现我不是第一个,很多人都碰到了这个问题,而且这个问题ReportViewer的一个bug,是不治之症,我心里凉了半截,不过过了一会,又发现了一个外国人的一个狡猾的方法,代码如下,希望对你有用!
private void reportViewer1_Print(object sender, CancelEventArgs e)
{
e.Cancel = true;
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Stop();
this.reportViewer1.PrintDialog();
}
这个方法就是用了一个定时器,触发第二次打印。我试了,确实起作用!
第二个问题就是ReportViewer的页面设置问题。我套打的票据的宽度大于高度,所以ReportViewer的页面设置就自动地把打印的方向设置为“横向”,这样最终打印机打印出来的字在票据上是竖的。解决这个问题的