[转载]PrintDocument,PrintDialog与PrintPreviewDialog用法总结

一、使用PrintDocument进行打印

复制代码
using System;
using System.Drawing;
using System.Drawing.Printing;
using System.Windows.Forms;
 
namespace PrintTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            //实例化打印对象
            PrintDocument printDocument1 = new PrintDocument();
            //设置打印用的纸张,当设置为Custom的时候,可以自定义纸张的大小
            printDocument1.DefaultPageSettings.PaperSize = new PaperSize("Custum", 500, 500);
            //注册PrintPage事件,打印每一页时会触发该事件
            printDocument1.PrintPage += new PrintPageEventHandler(this.PrintDocument_PrintPage);
            //开始打印
            printDocument1.Print();
        }
        private void PrintDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            //设置打印内容及其字体,颜色和位置
            e.Graphics.DrawString("Hello World!", new Font(new FontFamily("黑体"), 24), System.Drawing.Brushes.Red, 50, 50);
        }
    }
}
复制代码

二、使用PrintDialog增加打印对话框

复制代码
using System;
using System.Drawing;
using System.Drawing.Printing;
using System.Windows.Forms;
 
namespace PrintTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            //实例化打印对象
            PrintDocument printDocument1 = new PrintDocument();
            //设置打印用的纸张,当设置为Custom的时候,可以自定义纸张的大小
            printDocument1.DefaultPageSettings.PaperSize = new PaperSize("Custum", 500, 500);
            //注册PrintPage事件,打印每一页时会触发该事件
            printDocument1.PrintPage += new PrintPageEventHandler(this.PrintDocument_PrintPage);
      
            //初始化打印对话框对象
            PrintDialog printDialog1 = new PrintDialog();
            //将PrintDialog.UseEXDialog属性设置为True,才可显示出打印对话框
            printDialog1.UseEXDialog = true;
            //将printDocument1对象赋值给打印对话框的Document属性
            printDialog1.Document = printDocument1;
            //打开打印对话框
            DialogResult result = printDialog1.ShowDialog();
            if (result == DialogResult.OK)                 
                printDocument1.Print();//开始打印
        }
        private void PrintDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            //设置打印内容及其字体,颜色和位置
            e.Graphics.DrawString("Hello World!", new Font(new FontFamily("黑体"), 24), System.Drawing.Brushes.Red, 50, 50);
        }
    }
}
复制代码

打印对话框如下图所示:

 

三、使用PrintPreviewDialog增加打印预览对话框

复制代码
using System;
using System.Drawing;
using System.Drawing.Printing;
using System.Windows.Forms;
 
namespace PrintTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            //实例化打印对象
            PrintDocument printDocument1 = new PrintDocument();
            //设置打印用的纸张,当设置为Custom的时候,可以自定义纸张的大小
            printDocument1.DefaultPageSettings.PaperSize = new PaperSize("Custum", 500, 500);
            //注册PrintPage事件,打印每一页时会触发该事件
            printDocument1.PrintPage += new PrintPageEventHandler(this.PrintDocument_PrintPage);
      
            //初始化打印预览对话框对象
            PrintPreviewDialog printPreviewDialog1 = new PrintPreviewDialog();
            //将printDocument1对象赋值给打印预览对话框的Document属性
            printPreviewDialog1.Document = printDocument1;
            //打开打印预览对话框
            DialogResult result = printPreviewDialog1.ShowDialog();
            if (result == DialogResult.OK)                 
                printDocument1.Print();//开始打印
        }
        private void PrintDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            //设置打印内容及其字体,颜色和位置
            e.Graphics.DrawString("Hello World!", new Font(new FontFamily("黑体"), 24), System.Drawing.Brushes.Red, 50, 50);
        }
    }
}
复制代码

打印时,会显示下图所示预览画面:

注意:PrintDialog与PrintPreviewDialog位于名称空间System.Windows.Forms(程序集为System.Windows.Forms.dll)中,而PrintDocument位于名称空间System.Drawing.Printing(程序集为System.Drawing.dll)中。

 

posted @   雲霏霏  阅读(5907)  评论(1编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
点击右上角即可分享
微信分享提示