C#打印类PrintDocument、PrintDialog、PrintPreviewDialog使用示例

 更新时间:2015年06月16日 11:41:10   投稿:junjie  
这篇文章主要介绍了C#打印类PrintDocument、PrintDialog、PrintPreviewDialog使用示例,本文分别给出了示例代码,需要的朋友可以参考下

1.使用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);
    }
  }
}

2.使用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);
    }
  }
}

打印对话框如下图所示。

3.使用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)中。

相关文章

  • C#数据类型转换(显式转型、隐式转型、强制转型)

    C#数据类型转换(显式转型、隐式转型、强制转型)

    本文详细讲解了C#数据类型转换(显式转型、隐式转型、强制转型),文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • 浅谈C#网络编程详解篇

    浅谈C#网络编程详解篇

    在现今软件开发中,网络编程是非常重要的一部分,本文简要介绍下网络编程的概念和实践,需要的朋友可以参考下
    2017-01-01
  • Unity中 ShaderGraph 实现超级炫酷的溶解效果入门级教程

    Unity中 ShaderGraph 实现超级炫酷的溶解效果入门级教程

    这篇文章主要介绍了Unity中的 ShaderGraph 实现超级炫酷的溶解效果入门级教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-07-07
  • C#制作简易的屏保

    C#制作简易的屏保

    这篇文章主要为大家详细介绍了C#制作简易的屏保的相关资料,C#如何制作屏保的过程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • C#实现把科学计数法(E)转化为正常数字值

    C#实现把科学计数法(E)转化为正常数字值

    这篇文章主要介绍了C#实现把科学计数法(E)转化为正常数字值,本文直接给出代码实例,需要的朋友可以参考下
    2015-06-06
  • 详解C#如何读写config配置文件

    详解C#如何读写config配置文件

    这篇文章主要介绍了详解C#如何读写config配置文件,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • 简单了解C#设计模式编程中的桥接模式

    简单了解C#设计模式编程中的桥接模式

    这篇文章主要介绍了C#设计模式编程中的桥接模式,桥接模式经常应用于解耦逻辑层与数据操作层,需要的朋友可以参考下
    2016-02-02
  • C#使用Fleck实现创建WebSocket服务器

    C#使用Fleck实现创建WebSocket服务器

    这篇文章主要为大家详细介绍了C#如何使用Fleck实现创建WebSocket服务器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-01-01
  • C#交换两个变量值的几种方法总结

    C#交换两个变量值的几种方法总结

    这篇文章介绍了C#交换两个变量值的几种方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-10-10
  • C#实现带消息数的App图标

    C#实现带消息数的App图标

    这篇文章主要介绍了如何使用C#实现带消息数的App图标的方法,并附上全部源码,分享给大家,有需要的小伙伴可以参考下。
    2015-12-12

最新评论