`
498320858
  • 浏览: 393082 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

c# windowsForm打印

阅读更多

在windows应用程序中文档的打印是一项非常重要的功能,在以前一直是一个非常复杂的工作,Microsoft .net Framework的打

印功能都以组件的方式提供,为程序员提供了很大的方便,但是这几个组件的使用还是很复杂的,有必要解释一下。

打印操作通常包括以下四个功能

1 打印设置 设置打印机的一些参数比如更改打印机驱动程序等

2 页面设置 设置页面大小纸张类型等

3 打印预览 类似于word中的打印预览

4 打印

实现打印功能的核心是PrintDocument类这个类属于System.Drawing.Printing名字空间这个类封装了当前的打印设置页面设置以及所

有的与打印有关的事件和方法

这个类包括以下几个属性 事件 和方法

1、PrinterSettings 属性

  存放打印机的设置信息这个属性不需要程序员设置因为它是由打印对话框获取的

2、PrintCountroller 属性

  控制打印过程

3、DefaultPageSettings 属性

  存放页面设置信息 打印纸大小方向等也不需要程序员设置因为它是由页面设置对话框获取的

4、DocumentName 属性

  指定文档名称,出现在打印机状态窗口中

1。 BeginPrint事件

  在打印之前发出

2. PrintPage事件

  每打印一页是发出,事件接受一个PrintPageEventArgs参数该参数封装了打印相关的信息

  PrintPageEventArgs参数有很多重要的属性

  1 Cancel 取消打印

  2 Graphics 页面的绘图对象

  3 HasMorePages 是否还有要打印的页面

Print 方法 该方法没有参数 调用它将按照当前设置开始打印

若实现打印功能首先构造PrintDocument对象添加打印事件

PrintDocument printDocument;

private void InitializeComponent()

{

...

printDocument=new PrintDocument();

printDocument.PrintPage += new PrintPageEventHandler (this.printDocument_PrintPage);

...

}

实现打印事件功能

打印和绘图类似都是调用Graphics 类的方法进行画图 不同的是一个在显示器上一个在打印纸上并且打印要进行一些复杂的计算

如换行 分页等。

private void printDocument_PrintPage(object sender,PrintPageEventArgs e)

{

StringReader lineReader = new StringReader(textBox.Text);

Graphics g = e.Graphics; //获得绘图对象

float linesPerPage = 0; //页面的行号

float yPosition = 0;   //绘制字符串的纵向位置

int count = 0; //行计数器

float leftMargin = e.MarginBounds.Left; //左边距

float topMargin = e.MarginBounds.Top; //上边距

string line = null; 行字符串

Font printFont = this.textBox.Font; //当前的打印字体

SolidBrush myBrush = new SolidBrush(Color.Black);//刷子

linesPerPage = e.MarginBounds.Height / printFont.GetHeight(g);//每页可打印的行数

//逐行的循环打印一页

    while(count < linesPerPage && ((line=lineReader.ReadLine()) != null))

    {

       yPosition = topMargin + (count * printFont.GetHeight(g));

       g.DrawString(line, printFont, myBrush, leftMargin, yPosition, new StringFormat());

       count++;

    }

如果本页打印完成而line不为空说明还有没完成的页面这将触发下一次的打印事件在下一次的打印中lineReader会

自动读取上次没有打印完的内容因为lineReader是这个打印方法外的类的成员它可以记录当前读取的位置

    if(line != null)

        e.HasMorePages = true;

    else

        e.HasMorePages = false;

}

打印设置,构造打印对话框 将对话框中设置的Document属性赋给printDocument这样会将用户的设置自动保存到printDocument

的PrinterSettings属性中

protected  void FileMenuItem_PrintSet_Click(object sender,EventArgs e)

{

PrintDialog printDialog = new PrintDialog();

printDialog.Document = printDocument;

printDialog.ShowDialog();

}

页面设置和打印预览与打印设置原理相同都是构造对话框将用户在对话框中的设置保存到相应的类的属性中

protected  void FileMenuItem_PageSet_Click(object sender,EventArgs e)

{

  PageSetupDialog pageSetupDialog = new PageSetupDialog();

  pageSetupDialog.Document = printDocument;

  pageSetupDialog.ShowDialog();

}

打印预览

protected void FileMenuItem_PrintView_Click(object sender,EventArgs e)

{

   PrintPreviewDialog printPreviewDialog = new PrintPreviewDialog();

   printPreviewDialog.Document = printDocument;

      try

      {

    printPreviewDialog.ShowDialog();

      }

    catch(Exception excep)

    {

    MessageBox.Show(excep.Message, "打印出错", MessageBoxButtons.OK, MessageBoxIcon.Error);

    }

}

打印就可以直接调用printDocument的Print()方法因为用户可能在打印之前还要再更改打印设置所以

在这里再次显示打印设置对话框

  protected void FileMenuItem_Print_Click(object sender,EventArgs e)

  {

   PrintDialog printDialog = new PrintDialog();

   printDialog.Document = printDocument;

   lineReader = new StringReader(textBox.Text);

   if (printDialog.ShowDialog() == DialogResult.OK)

   {

    try

       {

       printDocument.Print();

       }

       catch(Exception excep)

            {

              MessageBox.Show(excep.Message, "打印出错", MessageBoxButtons.OK, MessageBoxIcon.Error);

              printDocument.PrintController.OnEndPrint(printDocument,new PrintEventArgs());

            }

       }

  }

总结打印的过程是

1 在应用程序窗体初始化时构造PrintDocument对象  添加 printDocument 的 PrintPage 方法

2 实现PrintPage方法  4 在用户的单击事件中调用 printDocument 的 Print方法实现打印功能

在这中间可能要用到  PrintDialog PrintPreviewDialog PageSetupDialog 设置和查看打印效

 

 

原文地址:http://0106551513.blog.163.com/blog/static/807303820089164379205/

分享到:
评论

相关推荐

    在C# Windows form中实现水晶报表

    在C# Windows Form中实现水晶报表(Crystal Reports)是一项常见的任务,这主要涉及到将数据库中的数据可视化并以报告的形式展示给用户。水晶报表是SAP的一款强大报告工具,它可以与多种编程语言集成,包括C#,用于...

    C#实现打印功能_c#打印_

    在C#编程环境中,实现打印功能是常见的需求,特别是在开发桌面应用或报表系统时。本文将深入探讨如何在C#中实现打印功能,包括基本概念、API使用以及实际代码示例。 1. 基本概念 在Windows环境中,打印功能主要依赖...

    c#winform票据打印源代码

    在本文中,我们将深入探讨基于C# WinForm的票据打印技术,这主要涉及到Windows桌面应用程序开发和打印控制。"c# winform票据打印源代码"是开发者分享的一个项目,其核心在于提供了一种用于设计和打印各类票据的解决...

    windows form窗体控件生成的 记事本,C#编程

    在本文中,我们将深入探讨如何使用C#编程语言和Windows Form窗体控件来创建一个类似于系统记事本的应用程序。这个项目对于初学者来说是一个很好的起点,因为它涵盖了基础的文本处理、用户交互以及UI设计等多个重要...

    c#打印datagridview数据

    - **实现:** 使用Windows Form创建,包含多个控件如CheckBox、ComboBox等。 #### 七、总结 通过上述解析,可以看出该打印解决方案为C#开发者提供了一个灵活而强大的工具,用于处理复杂的数据打印需求。不仅可以轻松...

    C# post方式提交Form表单

    在IT行业中,C#是一种广泛使用的编程语言,尤其在开发Windows桌面应用、Web应用以及游戏等领域。本篇文章将深入探讨如何在C#中通过POST方式提交Form表单,包括其原理、步骤和实际代码示例。 一、POST提交表单的基本...

    C#打印网页内容

    ### C# 使用 WebBrowser 控件打印网页内容 在.NET Framework 中,C# 语言提供了丰富的控件库,其中 `WebBrowser` 控件是用于显示 HTML 内容的强大工具之一。利用该控件不仅可以加载和浏览网页,还可以实现对网页...

    非常全的C# winform打印功能

    在C# WinForm应用开发中,打印功能是一个重要的组成部分,特别是在构建桌面应用程序时,用户往往需要将数据显示在纸上或者导出为PDF等可打印格式。本资料包专注于C# WinForm环境下的打印功能实现,提供了丰富的示例...

    C#WIN FORM基础

    **C# Win Form基础**是Windows应用程序开发的重要领域,它基于.NET Framework或.NET Core,用于构建桌面用户界面。本文将深入探讨Win Form的基本概念、组件、属性、事件以及开发流程,帮助初学者全面理解并掌握C# ...

    C# 设置模版票据打印实例代码

    在C#编程环境中,开发一个能够设置模板并进行票据打印的应用是一个常见的需求,尤其是在财务、物流等业务领域。本实例代码旨在提供一个解决方案,允许用户动态设计模板,将模板保存以便后续使用,并能加载已保存的...

    C#窗体图形图像打印源代码

    首先,我们需要了解Windows Forms(WinForms)平台,这是C#进行桌面应用开发的基础。在WinForms中,我们可以创建窗体(Form),并在窗体上添加控件,其中包括用于显示和操作图形图像的控件。 1. **Graphics类**:C#...

    C#+使用word模板+批量打印例子

    在IT行业中,C#是一种广泛使用的编程语言,尤其在开发Windows桌面应用方面。在这个"C#+使用word模板+批量打印例子"中,我们将探讨如何利用C#来操作Microsoft Word模板并进行批量打印。这个示例可能涉及到一个小型的...

    c#经典打印代码.doc

    本文档“c#经典打印代码.doc”提供了关于如何在C#中实现打印功能的详细步骤和方法,这对于初学者理解和使用C#进行打印程序开发非常有帮助。 首先,我们需要引入必要的命名空间,以便使用C#中的打印服务。在代码的...

    小小记事本 c#(带打印功能)

    在IT行业中,开发一款带有打印功能的简单记事本是一个常见的练习项目,它可以帮助初学者更好地理解C#编程语言和Windows应用程序开发。标题中的“小小记事本 c#(带打印功能)”指的是一个使用C#语言编写的,具有基本...

    c#写的word嵌入form

    在C#编程中,将Word文档嵌入到Windows Forms(简称Form)中是一种常见的需求,尤其是在开发具有文档编辑和查看功能的应用程序时。这个“c#写的word嵌入form”项目可能涉及到以下关键知识点: 1. **Microsoft.Office...

    C# 小票套打打印标尺打印源码

    【标题】"C# 小票套打打印标尺打印源码" 涉及的知识点主要集中在C#编程语言的使用,特别是针对小票打印的定制化开发。C#是一种面向对象的编程语言,广泛应用于Windows桌面应用、游戏开发以及服务器端应用程序等。在...

    c# 结合锐浪报表Grid++Report6 实现推送数据打印,代码简单易懂,写了一个案例给大家

    首先,Grid++Report6是锐浪报表提供的一个强大的报表设计和开发工具,它允许开发者在Windows环境下创建复杂、动态的报表,并且提供了丰富的API接口,使得在C#应用中集成报表打印变得简单。通过Grid++Report6,我们...

    C#打印系列---打印窗体中的文字信息(十分经典)

    这可以通过创建一个新的`Form`,在其上使用相同的`Graphics`对象模拟打印,展示即将打印的效果。`PreviewDialog`或自定义的用户界面都可以实现这一功能。 6. **启动打印**: 使用`PrintDocument`的`Print()`方法...

    C#打印DataGridView实例

    总结,C#中打印DataGridView涉及到对Windows打印系统、图形绘制和用户交互的理解,通过合理利用.NET Framework提供的API,我们可以方便地将电子表格转换为纸质输出。这个过程不仅展示了C#编程的灵活性,也体现了...

Global site tag (gtag.js) - Google Analytics