053打印对话框

本文详细介绍了C#中实现打印功能的步骤,包括创建PrintDocument实例、使用PrintController和PrinterSettings,以及通过PrintPage事件处理程序进行实际打印。同时讲解了添加打印功能、处理多个页面、设置页面和打印设置的方法,还提到了使用PrintPreviewDialog进行打印预览的实现。
摘要由CSDN通过智能技术生成

1.打印结构

  •     PrintDocument:打印的基类,也是打印过程中最重要的类。要打印一个文档,必须先创建一个该类的实例。通常,会创建PrintDocument类的实例,并设置对打印内容进行描述的属性,然后调用其Print()方法来实际打印文档。
  •     PrintController:控制打印任务流。打印控制器类PrintController提供了打印开始、打印每个页面和打印结束控制。该类是抽象类,真正完成打印任务的是具体类StandardPrintController和PreviewPrintController。
  •     PrinterSettings:使用PrinterSettings类可以获取打印和设置打印机配置。例如,双面打印,横向打印或纵向打印、打印份数等。该类的配置由PageSetupDialog类进行。
  •     PrintDialog:确定使用哪个打印机和如何配置PrinterSettings
  •     PageSettings:设置打印页面,可以设置页面是彩色还是黑白。该类的配置也由PageSetupDialog类进行。
  •     Graphics:使该类可以访问打印机的设备内容,为打印机发送字符串、线条和曲线。

 这些类按照下图所示的打印序列来完成打印任务。

    应用程序必须先调用PrintDocument的Print()方法,以启动打印序列。因为PrintDocument本身并不负责打印流,所以会调用打印控制器PrintController类的OnStartPrint、OnEndPrint、OnStartPage和OnEndPage方法,指示打印机如何打印文档。
    打印控制器PrintController通过调用OnBeginPrint()方法通知PrintDocument开始打印。如果应用程序应在打印任务的开始执行时某些操作,就必须在PrintDocument中注册一个事件处理程序,这样才会在应用程序中接到通知消息。在图中,假定注册了处理程序OnBeginPrint(),那么在打印开始时PrintDocument类会调用应用程序的OnBeginPrint()方法。
    在开始阶段完成后,PrintController就进入PrintLoop(),为每个要打印的页面调用PrintDocument类的OnPrintPage()方法,而OnPrintPage()方法会调用所有的PrintPage事件处理程序。因此,必须对每个页面执行该处理程序,否则不会打印任何内容。在图中,该处理程序为nPrintPage()。
    在打印完最后一页后,PrintController就会调用PrintDocument类的OnEndPrint()方法,结束打印任务。
    总之,可以在PrintDocument.PrintPage处理程序中执行打印代码,每个要打印的页面都要调用该处理程序。如果打印任务只需要执行一次打印代码,就必须执行BeginPrint和EndPrint事件处理程序。
    PrintPage事件处理程序接收一个PrintPageEventArgs类型的参数。该类与PageSettings和Graphics类相关联:PageSettings类可以设置页面的大小、页边距,以及获取打印机的设备信息。另一方面,Grahics类可以访问打印机的设备内容,为打印机发送字符串、线条和曲线信息。

2.添加打印功能

        在添加PrintDialog之前先添加一些打印菜单项。为“文件菜单项添加两个分隔符,以及“页面设置”,  “打印预览”和
“打印”及“退出”菜单项。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ngbshzhn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值