×

Loading...
Ad by
  • 推荐 OXIO 加拿大高速网络,最低月费仅$40. 使用推荐码 RCR37MB 可获得一个月的免费服务
Ad by
  • 推荐 OXIO 加拿大高速网络,最低月费仅$40. 使用推荐码 RCR37MB 可获得一个月的免费服务

以前用C#编过一个打印控件,具体思路吗,就是把PrintDocument , PrintDialog , PageSetupDialog , PrintPreviewDialog 这几个类想办法搅和在一起就好了

本文发表在 rolia.net 枫下论坛别说,想当年做打印这块还真头疼过一段时间。这几个类比如 PrintDocument 和它下属的 PrintController 类都是相互嵌套,觉得很是混乱! 不过用得多了也就习惯了

一般的我会定义一个 PrintDocument 的 object
PrintDocument pd=new PrintDocument();

然后定义 PageSetupDialog, PrintPreviewDialog, PrintDialog三个类的objects
PageSetupDialog psd=new PageSetupDialog();
PrintPreviewDialog ppd=new PrintPreviewDialog();
PrintDialog pdl=new PrintDialog();

然后将这3个类的Document属性全部赋予 最先生成的PrintDocument object 就可以了psd.Document=pd;
ppd.Document=pd;
pdl.Document=pd;

然后你可以分别用ShowDialog()函数将这3个Dialog显示出来,里面所作的一切改动都将反映到 PrintDocument object里,也就是 pd里
然后自己写好 PrintDocument.PrintPage event 就可以了

这三个控件你也可以从toolbox中拖到form上自动生成,方便一些,但看起来乱。我倾向于自己写

当然我说这些前提是你对打印要有个基本的了解,知道这些类的作用。
最关键的还是怎样写 PrintPage event , 里面涉及到横向打还是纵向打,判断页边据,是否分页。尤其在画表格的时候,能把人烦死。大量的用到GDI+的知识


祝好运更多精彩文章及讨论,请光临枫下论坛 rolia.net
Report

Replies, comments and Discussions:

  • 工作学习 / 专业技术讨论 / 有人有在windows application里做“打印功能”的经验吗?我想知道一下大概的architecture是怎样的。多些!!
    • GDI的一部分,跟Paint基本上是一样的。
    • If you are using .Net, System.Drawing.Printing has everything you want.
    • 以前用C#编过一个打印控件,具体思路吗,就是把PrintDocument , PrintDialog , PageSetupDialog , PrintPreviewDialog 这几个类想办法搅和在一起就好了
      本文发表在 rolia.net 枫下论坛别说,想当年做打印这块还真头疼过一段时间。这几个类比如 PrintDocument 和它下属的 PrintController 类都是相互嵌套,觉得很是混乱! 不过用得多了也就习惯了

      一般的我会定义一个 PrintDocument 的 object
      PrintDocument pd=new PrintDocument();

      然后定义 PageSetupDialog, PrintPreviewDialog, PrintDialog三个类的objects
      PageSetupDialog psd=new PageSetupDialog();
      PrintPreviewDialog ppd=new PrintPreviewDialog();
      PrintDialog pdl=new PrintDialog();

      然后将这3个类的Document属性全部赋予 最先生成的PrintDocument object 就可以了psd.Document=pd;
      ppd.Document=pd;
      pdl.Document=pd;

      然后你可以分别用ShowDialog()函数将这3个Dialog显示出来,里面所作的一切改动都将反映到 PrintDocument object里,也就是 pd里
      然后自己写好 PrintDocument.PrintPage event 就可以了

      这三个控件你也可以从toolbox中拖到form上自动生成,方便一些,但看起来乱。我倾向于自己写

      当然我说这些前提是你对打印要有个基本的了解,知道这些类的作用。
      最关键的还是怎样写 PrintPage event , 里面涉及到横向打还是纵向打,判断页边据,是否分页。尤其在画表格的时候,能把人烦死。大量的用到GDI+的知识


      祝好运更多精彩文章及讨论,请光临枫下论坛 rolia.net