为何预览有内容,打印出来却是空白页问题如上。求助高手,环境是 Vs 2005 C#.  硬件没有问题,我特地写了简短代码能打印出内容。主要求教,在print preview 设置方面是否有什么特别的要求,
辛苦的在自己的电脑写了好几天代码,没写到报表内容能预览却打印不出来,真郁闷啊。不能打印,整个程序就没有意义,请哪位高手帮帮忙。谢谢。

解决方案 »

  1.   

    我自己刚才翻看了一下,网上的帖子,确实没有类似的问题出现。我在想 是不是 document 的PageSize 设置有问题。哪位高手能不能给一个 A4 的PageSize 在document中设置的范例?  我用的都是默认的。
      

  2.   

    或许讲预览正确也不对,只是预览时,我看不到什么问题,显示正常,我用的是默认纸张设定。 在程序开编没多久,我试打过完整的一页,很正常,所以后面一直没再连接打印机测试。1、有没有可能代码造成预览正确、实际打印有问题?2、纸张的设定是否为使用 printdocument ,printpreviewdialog 必须?
      

  3.   


    打印一张成功,是软件刚开始编写的时候。  因为打印成功,后来就没再连接打印机测试。
    昨天测试打印才发现原来什么都打印不出来了。一张都打不出来。另外,我是通过print Preview Dialog 上的打印机按钮按打印的。
      

  4.   

    贴一下我的两个打印相关函数,请高手看看有没有问题:  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;
            }
      

  5.   


    经过自己的调试,问题解决了,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,则打印函数默认为打印已结束,所以会出现预览成功后,按打印却出来空白页的原因。谢谢各位的参与,虽然是自己解决的,结贴仍是必须的。呵呵。