DataGridView打印类
一下这个类专门用于打印DataGridView,但是功能不是很强大 如果有个性化需求 可在此基础上简单修改
Code
1public class DataGridViewPrint
2 {
3 private DataGridView dataGridView;
4 private PrintDocument printDocument;
5 private PageSetupDialog pageSetupDialog;
6 private PrintPreviewDialog printPreviewDialog;
7
8 public DataGridViewPrint(DataGridView dataGridView)
9 {
10 this.dataGridView = dataGridView;
11 printDocument = new PrintDocument();
12 printDocument.PrintPage += new PrintPageEventHandler(this.printDocument_PrintPage);
13 }
14
15 private void printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
16 {
17 int rowCount = 0;
18 int colCount = 0;
19 int x = 0;
20 int y = 0;
21 int rowGap = 20;
22 int colGap = 5;
23 int leftMargin = 50;
24 Font font = new Font("Arial", 10);
25 Font headingFont = new Font("Arial", 11, FontStyle.Underline);
26 Font captionFont = new Font("Arial", 10, FontStyle.Bold);
27 Brush brush = new SolidBrush(Color.Black);
28 string cellValue = "";
29
30 if (dataGridView.DataSource.GetType().ToString() == "System.Data.DataTable")
31 {
32 rowCount = ((DataTable)dataGridView.DataSource).Rows.Count;
33 }
34 else if (dataGridView.DataSource.GetType().ToString() == "System.Collections.ArrayList")
35 {
36 rowCount = ((ArrayList)dataGridView.DataSource).Count;
37 }
38 colCount = dataGridView.ColumnCount;
39
40
41
42
43 //print headings
44 y += rowGap;
45 x = leftMargin;
46 for (int j = 0; j < colCount; j++)
47 {
48 if (dataGridView.Columns[j].Width > 0)
49 {
50 cellValue = dataGridView.Columns[j].HeaderText;
51 e.Graphics.DrawString(cellValue, headingFont, brush, x, y);
52 x += dataGridView.Columns[j].Width + colGap;
53 }
54 }
55
56 //print all rows
57 for (int i = 0; i < rowCount; i++)
58 {
59 y += rowGap;
60 x = leftMargin;
61 for (int j = 0; j < colCount; j++)
62 {
63 if (dataGridView.Columns[j].Width > 0)
64 {
65 cellValue = dataGridView[i, j].ToString();
66 e.Graphics.DrawString(cellValue, font, brush, x, y);
67 x += dataGridView.Columns[j].Width + colGap;
68 y = y + rowGap * (cellValue.Split(new char[] { ' ', ' ' }).Length - 1);
69 }
70 }
71 }
72 string s = cellValue;
73 string f3 = cellValue;
74 }
75
76 public PrintDocument GetPrintDocument()
77 {
78 return printDocument;
79 }
80
81 public void Print()
82 {
83 try
84 {
85 pageSetupDialog = new PageSetupDialog();
86 pageSetupDialog.Document = printDocument;
87 pageSetupDialog.ShowDialog();
88 printPreviewDialog = new PrintPreviewDialog();
89 printPreviewDialog.Document = printDocument;
90 printPreviewDialog.Height = 600;
91 printPreviewDialog.Width = 800;
92 printPreviewDialog.ShowDialog();
93 }
94 catch (Exception e)
95 {
96 throw new Exception("Printer error." + e.Message);
97 }
98
99 }
100 }
转载于:https://www.cnblogs.com/OrisonWind/archive/2008/10/21/1315802.html
DataGridView打印类相关推荐
- DataGridView打印专家组件2.5版正式发布
版本:2.5.2(中文) 版权:LuckerSoft(2009-2010) 类型:个人免费,商业收费 下载地址(附演示源码):DataGridView打印专家组件及演示代码.rar 更多信息:http ...
- stm32f103gd32的usb虚拟串口,打印类printer组合设备
stm32f103&gd32的usb虚拟串口+打印类printer组合设备@TOC stm32f103&gd32的usb虚拟串口,打印类printer组合设备 由于gd32和stm32 ...
- php云打印类,PHP应用:PHP云打印类完整示例
<PHP应用:PHP云打印类完整示例>要点: 本文介绍了PHP应用:PHP云打印类完整示例,希望对您有用.如果有疑问,可以联系我们. 本文实例讲述了PHP云打印类.分享给大家供大家参考,具 ...
- 用css规范php的输出,一段很小但很实用的CSS打印类(附例子及_php
Untitled Document .tdp http://www.gaodaima.com/45586.html一段很小但很实用的css打印类(附例子及_php { border-bottom: 1 ...
- 免费DataGridView打印及.NET轻松打印控件(VB打印,C#打印)
datagridview打印控件下载地址: http://download.csdn.net/detail/myyouping/7536125 该控件应该是国内最好的datagridview打印控件, ...
- Java教程:Jasper-pdf打印类
Java教程:Jasper-pdf打印类 import net.sf.jasperreports.engine.*; import net.sf.jasperreports.engine.data.J ...
- python打印类的内容_python-打印类的所有实例
python-打印类的所有实例 对于Python中的类,如何定义函数以函数中定义的格式打印类的每个实例? user33061 asked 2019-12-25T05:00:09Z 7个解决方案 85 ...
- php打印机,PHP云打印类完整示例
本文实例讲述了PHP云打印类.分享给大家供大家参考,具体如下: 一个项目需求要几百台电脑都有打印功能,本来是想用网络打印机的,后来发现没有网络打印机,就自己动手写一个打印类算了. 类实现想法是:先把要 ...
- 润乾报表中常见的打印类问题的总结
在解决润乾报表的打印类问题时,首先要知道打印与哪些文件相关,下面就列出了与打印相关的文件及位置: 1.runqianReport4Applet.jar 位置:应用根目录下 2.report4.j ...
最新文章
- 安徽省计算机二级大题教程,安徽省计算机二级例题
- 博客刚开通,先转载几篇,请见谅
- Coolite Toolkit学习笔记系列文章
- 小猿圈web前端之网站性能优化方案
- 计算机做游戏到大学要学什么,大学学什么专业,毕业才能从事电竞行业?
- ygo游戏王卡组_游戏王:二线卡组脱颖而出的战将,混沌青眼卡组,仪式卡组的骄傲...
- 使用C++控制台程序或Python调用Dll创建Qt界面(dll中创建QApplication,qtwinmigrate的使用)
- Visual Studio 2017 15.3 已发布,增加.NET Core 2 支持
- ubunto中常出现的问题
- 樊正伦教授的养生之道中医文化与养生之---调情志
- 《游戏设计艺术(第2版)》——学习笔记(32)第32章 游戏改变玩家
- 街景地图工作是如何工作的
- 不看OCJP考题你永远不知道自己的JAVA基础有多差(一)
- 数据结构: 算法的时间复杂度和空间复杂度
- js cookie 数组 存读
- 计算机进位制及其规则,进位计数制及其转换方法过程详解
- 容量可动态扩展的LinkedBlockingQueue
- 信息学奥赛一本通-1404我家的门牌号
- python爬取cctalk视频_python爬虫urllib使用和进阶 | Python爬虫实战二
- nginx端口转发+域名映射
热门文章
- Maven安装与配置(最实用!!!)eclipse中配置maven
- 浅显易懂 Makefile 入门 (01)— 什么是Makefile、为什么要用Makefile、Makefile规则、Makefile流程如何实现增量编译
- Imagination 的神经网络加速器和 Visidon 的去噪算法被证明是完美的搭档
- AI 芯片的分类及技术
- 如何在TVM上集成Codegen(下)
- 计算机视觉一些项目实战技术
- C++ set 的使用
- Java 遍历map
- Ubuntu 系统安装OpenJDK 7,openjdk8
- Android Read-only file system