1 using System;
2 using System.Drawing;
3 using System.Collections;
4 using System.ComponentModel;
5 using System.Windows.Forms;
6 using System.Data;
7
8 namespace DataGridPrints
9 {
10 /// <summary>
11 /// Form1 的摘要说明。
12 /// </summary>
13 public class Form1 : System.Windows.Forms.Form
14 {
15 private System.Windows.Forms.Button button1;
16 private System.Windows.Forms.DataGrid dataGrid1;
17 /// <summary>
18 /// 必需的设计器变量。
19 /// </summary>
20 private System.ComponentModel.Container components = null;
21
22 public Form1()
23 {
24 //
25 // Windows 窗体设计器支持所必需的
26 //
27 InitializeComponent();
28
29 //
30 // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
31 //
32 }
33
34 /// <summary>
35 /// 清理所有正在使用的资源。
36 /// </summary>
37 protected override void Dispose( bool disposing )
38 {
39 if( disposing )
40 {
41 if (components != null)
42 {
43 components.Dispose();
44 }
45 }
46 base.Dispose( disposing );
47 }
48
49 #region Windows 窗体设计器生成的代码
50 /// <summary>
51 /// 设计器支持所需的方法 - 不要使用代码编辑器修改
52 /// 此方法的内容。
53 /// </summary>
54 private void InitializeComponent()
55 {
56 this.button1 = new System.Windows.Forms.Button();
57 this.dataGrid1 = new System.Windows.Forms.DataGrid();
58 ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit();
59 this.SuspendLayout();
60 //
61 // button1
62 //
63 this.button1.Location = new System.Drawing.Point(58, 190);
64 this.button1.Name = "button1";
65 this.button1.Size = new System.Drawing.Size(90, 24);
66 this.button1.TabIndex = 0;
67 this.button1.Text = "Print";
68 this.button1.Click += new System.EventHandler(this.button1_Click);
69 //
70 // dataGrid1
71 //
72 this.dataGrid1.DataMember = "";
73 this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText;
74 this.dataGrid1.Location = new System.Drawing.Point(38, 43);
75 this.dataGrid1.Name = "dataGrid1";
76 this.dataGrid1.Size = new System.Drawing.Size(624, 121);
77 this.dataGrid1.TabIndex = 1;
78 //
79 // Form1
80 //
81 this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
82 this.ClientSize = new System.Drawing.Size(678, 303);
83 this.Controls.Add(this.dataGrid1);
84 this.Controls.Add(this.button1);
85 this.Name = "Form1";
86 this.Text = "Form1";
87 this.Load += new System.EventHandler(this.Form1_Load);
88 ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();
89 this.ResumeLayout(false);
90
91 }
92 #endregion
93
94 /// <summary>
95 /// 应用程序的主入口点。
96 /// </summary>
97 [STAThread]
98 static void Main()
99 {
100 Application.Run(new Form1());
101 }
102
103 private void Form1_Load(object sender, System.EventArgs e)
104 {
105 DataTable dt = SomeDataTable();
106 this.dataGrid1.DataSource = dt;
107 CreatStyle(this.dataGrid1);
108 }
109
110 private void CreatStyle(DataGrid grid)
111 {
112 DataGridTableStyle style = new DataGridTableStyle();
113 DataTable dt = (DataTable) grid.DataSource;
114 style.MappingName = dt.TableName;
115
116 for(int j = 0; j < dt.Columns.Count; j++)
117 {
118 DataGridTextBoxColumn cs = new DataGridTextBoxColumn();
119 cs.MappingName = dt.Columns[j].ColumnName;
120 cs.HeaderText = dt.Columns[j].ColumnName;
121 cs.ReadOnly = true;
122 style.GridColumnStyles.Add(cs);
123 }
124 grid.TableStyles.Clear();
125 grid.TableStyles.Add(style);
126
127 }
128 private DataTable SomeDataTable()
129 {
130
131 DataTable dt = new DataTable("MyTable");
132
133 //add some columns
134 int nCols = 5;
135 for(int j = 0; j < nCols; ++j)
136 dt.Columns.Add(new DataColumn(string.Format("col{0}", j), typeof(string)));
137
138 //add some rows
139 int nRows = 40;
140 for(int i = 0; i < nRows; ++i)
141 {
142 DataRow dr = dt.NewRow();
143 for(int j = 0; j < nCols; ++j)
144 dr[j] = string.Format("row {0} col {1}", i, j);
145 dt.Rows.Add(dr);
146 }
147
148 dt.DefaultView.AllowNew = false;//turn off append row
149 return dt;
150 }
151
152 private void button1_Click(object sender, System.EventArgs e)
153 {
154 GridPrinter dgp=new GridPrinter(this.dataGrid1,0);
155 string[] header={"AAAA","BBBB","CCCC","DDDD","EEEE"};
156 dgp.setHeader(header);//如果不用改原header就不用赋值。
157 int[] colWidth = {20,20,20,20,20};
158 dgp.setColWidth(colWidth);
159
160 int[] disType ={0,0,0,0,0,0};//设定Decimal打印类型,0代表左对齐
161 dgp.setDisplayType(disType);
162
163 int[] titleDis = {0,0,0,0,0};//设置列标题对齐方式1代表右对齐,0代表左对齐,包含宽度为0的列
164 dgp.setTitleDisplay(titleDis);
165 dgp.Print();
166 }
167 }
168 }