文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络编程Asp.Net怎样用C#实现完整文档打印功能
精品推荐
特别推荐
·技巧实例:ASP.NET生成静态页面实现方法
·ASP.NET、JSP及PHP之间的抉择
·.net基础知识错误注意二十二点知识
·asp.net2.0学习历程 菜鸟到中级程序员的飞跃
·.NET基础知识-什么是.NET
·初学C#+ASP.NET+Oracle时积累的备忘点滴
·专家详解:复杂表达式的执行步骤
·asp.net中的加密方法
·DataGrid常见关注问题解决方案
·学习笔记 ASP.NET 5种页面转向法
热点TOP10
·DataList嵌套实例
·C#中势将窗体拖拽进行到底
·Paint.NET 3.20正式版下载
·ASP.NET2.0的multiview和wizard控件
·.net基础知识错误注意二十二点知识
·.NET 3.x新特性之自动属性及集合初始化
·ASP.NET中Multi-ListBox控件编程详解
·技巧实例:ASP.NET生成静态页面实现方法
·绝对精华:ASP.NET常用的三十三种实用代码
·动态创建内容时所用的W3C DOM属性和方法

怎样用C#实现完整文档打印功能

日期:2008年6月13日 作者: 查看:[大字体 中字体 小字体]


  在windows应用程序中文档的打印是一项非常重要的功能,在以前一直是一个非常复杂的工作,Microsoft .net Framework的打印功能都以组件的方式提供,为程序员提供了很大的方便,但是这几个组件的使用还是很复杂的,有必要解释一下。

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

  1 打印设置 设置打印机的一些参数比如更改打印机驱动程序等
  2 页面设置 设置页面大小纸张类型等
  3 打印预览 类似于word中的打印预览
  4 打印

  下面我把我编写的记事本(全部源代码可以在http://www.cndot.net中下载)中用到的打印功能的代码进行解释希望能给大家一些帮助实现打印功能的核心是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)
{
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)

[1] [2] [3] 下一页 




上一篇:使用C#编写LED样式时钟控件

下一篇:轻松编写自己的拖拉机算法,进行算法大战

相关文章:
·如何实现局域网打印机共享
·黑鹰行动军刀部队-完整攻略 - 游戏攻略
·3Ds max多边形建模主要功能命令
·怎样永久激活Windows Vista?
·高手教你怎样在网上轻松赚钱
·屏蔽五项网络功能 让XP系统极速狂飙
·怎样制作网页?
·在Excel中的打印设置的技巧(图)
·燕麦可改善男性性功能
·暗黑破坏神2:毁灭之王 符文物品、符石功能、赫拉笛克方块等 - 游戏秘籍
相关软件:
·有关毛泽东的一些问题解答(不完整版)
·红太阳是怎样升起的:延安整风运动的来龙去脉
·黑暗史诗-FATE绿色完整版
·老板是怎样炼成的
·金山词霸2006 SP1 with 牛津英汉双解词典 全功能第二版
·公司企业网站管理系统模板功能强大版
·细节决定成败(完整版)
·《反恐精英CS1.6》完整安装版本
·极品飞车9简体中文版 完整无删改
·功能较强的一个FLASH编辑器

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.net
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.net All Rights Reserved. 鄂ICP备05000083号Powered by:viphot