首页 > 代码库 > .Net常用技巧_C#打印(PrintDocument、PrintDialog、PageSetupDialog、PrintPreviewDialog)

.Net常用技巧_C#打印(PrintDocument、PrintDialog、PageSetupDialog、PrintPreviewDialog)

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Drawing.Printing;namespace demo{publicpartialclass PrintOther : Form{public PrintOther(){InitializeComponent();}//PrintDocument类是实现打印功能的核心,它封装了打印有关的属性、事件、和方法PrintDocument printDocument =new PrintDocument();privatevoid btnPrint_Click(object sender, EventArgs e){//printDocument.PrinterSettings可以获取或设置计算机默认打印相关属性或参数,如:printDocument.PrinterSettings.PrinterName获得默认打印机打印机名称//printDocument.DefaultPageSettings //可以获取或设置打印页面参数信息、如是纸张大小,是否横向打印等//设置文档名printDocument.DocumentName ="处方笺";//设置完后可在打印对话框及队列中显示(默认显示document)//设置纸张大小(可以不设置取,取默认设置)PaperSize ps =new PaperSize("Your Paper Name", 100, 70);ps.RawKind =150; //如果是自定义纸张,就要大于118,(A4值为9,详细纸张类型与值的对照请看http://msdn.microsoft.com/zh-tw/library/system.drawing.printing.papersize.rawkind(v=vs.85).aspx)printDocument.DefaultPageSettings.PaperSize = ps;//打印开始前printDocument.BeginPrint +=new PrintEventHandler(printDocument_BeginPrint);//打印输出(过程)printDocument.PrintPage +=new PrintPageEventHandler(printDocument_PrintPage);//打印结束printDocument.EndPrint +=new PrintEventHandler(printDocument_EndPrint);//跳出打印对话框,提供打印参数可视化设置,如选择哪个打印机打印此文档等PrintDialog pd =new PrintDialog();pd.Document = printDocument;if (DialogResult.OK == pd.ShowDialog()) //如果确认,将会覆盖所有的打印参数设置{//页面设置对话框(可以不使用,其实PrintDialog对话框已提供页面设置)PageSetupDialog psd =new PageSetupDialog();psd.Document = printDocument;if (DialogResult.OK == psd.ShowDialog()){//打印预览PrintPreviewDialog ppd =new PrintPreviewDialog();ppd.Document = printDocument;if (DialogResult.OK == ppd.ShowDialog())printDocument.Print(); //打印}}}void printDocument_BeginPrint(object sender, PrintEventArgs e){//也可以把一些打印的参数放在此处设置}void printDocument_PrintPage(object sender, PrintPageEventArgs e){//打印啥东东就在这写了Graphics g = e.Graphics;Brush b =new SolidBrush(Color.Black);Font titleFont =new Font("宋体", 16);string title ="社区卫生服务站 处方笺";g.DrawString(title, titleFont, b, new PointF((e.PageBounds.Width - g.MeasureString(title, titleFont).Width) /2, 20));//e.Cancel//获取或设置是否取消打印//e.HasMorePages //为true时,该函数执行完毕后还会重新执行一遍(可用于动态分页)}void printDocument_EndPrint(object sender, PrintEventArgs e){//打印结束后相关操作}}}