求助:为何预览有内容,打印出来却是空白页 为何预览有内容,打印出来却是空白页问题如上。求助高手,环境是 Vs 2005 C#. 硬件没有问题,我特地写了简短代码能打印出内容。主要求教,在print preview 设置方面是否有什么特别的要求,辛苦的在自己的电脑写了好几天代码,没写到报表内容能预览却打印不出来,真郁闷啊。不能打印,整个程序就没有意义,请哪位高手帮帮忙。谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我自己刚才翻看了一下,网上的帖子,确实没有类似的问题出现。我在想 是不是 document 的PageSize 设置有问题。哪位高手能不能给一个 A4 的PageSize 在document中设置的范例? 我用的都是默认的。 或许讲预览正确也不对,只是预览时,我看不到什么问题,显示正常,我用的是默认纸张设定。 在程序开编没多久,我试打过完整的一页,很正常,所以后面一直没再连接打印机测试。1、有没有可能代码造成预览正确、实际打印有问题?2、纸张的设定是否为使用 printdocument ,printpreviewdialog 必须? 打印一张成功,是软件刚开始编写的时候。 因为打印成功,后来就没再连接打印机测试。昨天测试打印才发现原来什么都打印不出来了。一张都打不出来。另外,我是通过print Preview Dialog 上的打印机按钮按打印的。 贴一下我的两个打印相关函数,请高手看看有没有问题: void bPrint() //我的打印函数 { //ch_Document 直接从TOOLBAR中拉出来的Document this.ch_Document.DefaultPageSettings.Margins.Top = 35; this.ch_Document .DefaultPageSettings.Margins.Left = 35; this.ch_PrewiewDialog.PrintPreviewControl.AutoZoom = false; this.ch_PrewiewDialog .PrintPreviewControl.Zoom = 0.75; prn_Ch = new Doc_Ch_Print(); //prn_Ch 使我自己定义的一个要打印的文档类,要打印的数据全部封装在这个类里面 this.CurrentPage = 1;// 我自己定义的窗口级别的两个int,主要存储当前页面和总页面。 this.TotalPage = 99;//虚拟数,在以后的prn_Ch中的函数Count_Page计算中更正。 this.ch_PrewiewDialog .ShowDialog(); } private void ch_Document_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { if (this.CurrentPage <= this.TotalPage) { if (this.CurrentPage == 1) //如果是首页计算剩余页数总量 { prn_Ch.Count_Pages(e); this.TotalPage = prn_Ch.TotalPage; } prn_Ch.Print_Page(this.CurrentPage, e); e.HasMorePages = true; this.CurrentPage ++; } else { e.HasMorePages = false; } if (this.CurrentPage > this.TotalPage) e.HasMorePages = false; } 经过自己的调试,问题解决了,ch_Document_PrintPage函数末端语句的问题: if (this.CurrentPage > this.TotalPage) e.HasMorePages = false;该为: if (this.CurrentPage > this.TotalPage) {e.HasMorePages = false;this.CurrentPage =1}就行了。原因就是: 预览打印 和 打印 都会调用 ch_Document_PrintPage 函数一遍,所以如果this.CurrentPage 不被重置为1,则打印函数默认为打印已结束,所以会出现预览成功后,按打印却出来空白页的原因。谢谢各位的参与,虽然是自己解决的,结贴仍是必须的。呵呵。 OdbcDataReader 问题 》》》》》求解答 正则表达式怎么分割这样的字符串 Ajax调用后台方法问题 regasm注册的问题,请大家帮忙下 一个关于winfrom timer的问题 小弟初次遇到这样的问题,“值对于Int32 太大或太小” 我怎么收不到消息!惨啊! 高手们~~哪位给推荐几本 C#设计模式 电子版的书~~谢了~ axWindowsMediaPlayer的问题 对于高手可能是小儿科,对于学习中的我就要问你 关于NetworkStream类 write方法 C# 不支持像C++一样的构造函数成员变量赋值?
打印一张成功,是软件刚开始编写的时候。 因为打印成功,后来就没再连接打印机测试。
昨天测试打印才发现原来什么都打印不出来了。一张都打不出来。另外,我是通过print Preview Dialog 上的打印机按钮按打印的。
{
//ch_Document 直接从TOOLBAR中拉出来的Document
this.ch_Document.DefaultPageSettings.Margins.Top = 35;
this.ch_Document .DefaultPageSettings.Margins.Left = 35;
this.ch_PrewiewDialog.PrintPreviewControl.AutoZoom = false;
this.ch_PrewiewDialog .PrintPreviewControl.Zoom = 0.75;
prn_Ch = new Doc_Ch_Print(); //prn_Ch 使我自己定义的一个要打印的文档类,要打印的数据全部封装在这个类里面
this.CurrentPage = 1;// 我自己定义的窗口级别的两个int,主要存储当前页面和总页面。
this.TotalPage = 99;//虚拟数,在以后的prn_Ch中的函数Count_Page计算中更正。 this.ch_PrewiewDialog .ShowDialog();
} private void ch_Document_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
if (this.CurrentPage <= this.TotalPage)
{
if (this.CurrentPage == 1) //如果是首页计算剩余页数总量
{
prn_Ch.Count_Pages(e); this.TotalPage = prn_Ch.TotalPage;
}
prn_Ch.Print_Page(this.CurrentPage, e);
e.HasMorePages = true;
this.CurrentPage ++;
}
else
{
e.HasMorePages = false;
}
if (this.CurrentPage > this.TotalPage) e.HasMorePages = false;
}
经过自己的调试,问题解决了,ch_Document_PrintPage函数末端语句的问题: if (this.CurrentPage > this.TotalPage) e.HasMorePages = false;该为:
if (this.CurrentPage > this.TotalPage) {e.HasMorePages = false;this.CurrentPage =1}
就行了。原因就是:
预览打印 和 打印 都会调用 ch_Document_PrintPage 函数一遍,所以如果this.CurrentPage 不被重置为1,则打印函数默认为打印已结束,所以会出现预览成功后,按打印却出来空白页的原因。谢谢各位的参与,虽然是自己解决的,结贴仍是必须的。呵呵。