C#打印(PrintDocument、PrintDialog、PageSetupDialog、PrintPreviewDialog)

 这几天一直在弄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
{
public partial class PrintOther : Form
{

public PrintOther()
{
InitializeComponent();
}

// PrintDocument类是实现打印功能的核心,它封装了打印有关的属性、事件、和方法
PrintDocument printDocument = new PrintDocument();

private void 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)
{
// 打印结束后相关操作
}
}
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值