一段简单的打印代码(c#)
2009-12-18 18:21 calm_水手 阅读(402) 评论(0) 编辑 收藏 举报
代码
1 //数据流
2 System.IO.StringReader sr;
3 //要打印的字符串
4 private void redstr()
5 {
6 StringBuilder ojbbulider = new StringBuilder();
7 ojbbulider.Append("\n");
8 ojbbulider.Append ("测试1");
9 ojbbulider.Append("测试2");
10 ojbbulider.Append("------------------------------");
11 ojbbulider.Append("测试3");
12 ojbbulider.Append("\n");
13 sr = new System.IO.StringReader(ojbbulider.ToString());
14 }
15 //打印方法
16 private void button1_Click(object sender, EventArgs e)
17 {
18 try
19 {
20 if (printDialog1.ShowDialog() == DialogResult.OK)
21 {
22 printDocument1.Print();
23 }
24 }
25 catch (Exception ex)
26 {
27 MessageBox.Show("打印时出错" + ex.Message.ToString().Trim());
28 }
29 }
30
31 //打印预览
32 private void button2_Click(object sender, EventArgs e)
33 {
34 try
35 {
36
37 printPreviewDialog1.ShowDialog();
38 }
39 catch (Exception ex)
40 {
41 MessageBox.Show("预览时出错" + ex.Message.ToString().Trim());
42 }
43 }
44
45 //打印设置
46 private void button3_Click(object sender, EventArgs e)
47 {
48 try
49 {
50 pageSetupDialog1.ShowDialog();
51 }
52 catch (Exception ex)
53 {
54 MessageBox.Show("设置时出错" + ex.Message.ToString().Trim());
55 }
56 }
57
58 private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
59 {
60 Graphics objgraphics = e.Graphics;
61 e.Graphics.DrawString("测试", new Font(new FontFamily("宋体"), 10F), Brushes.Black, 10, 2);
62 redstr();
63 Font ziti = new Font(new FontFamily("宋体"), 10F);
64 //行高
65 float h = ziti.GetHeight(objgraphics);
66 //每一面的行数
67 float hangshu = (int)(e.MarginBounds.Height/h);
68 float left = e.MarginBounds.Left;
69 float top = e.MarginBounds.Top;
70
71 string str = "";
72 for (int i = 0; i < hangshu; i++)
73 {
74 str = sr.ReadLine();
75 if (str == null)
76 {
77 //没有下一页
78 e.HasMorePages = false;
79 return;
80 }
81 float x = left;
82 float y = top + h*i;
83 objgraphics.DrawString(str, ziti, new SolidBrush(Color.Black), x, y,new StringFormat());
84 }
85 //有下一页
86 e.HasMorePages = true;
87 }
88 }
2 System.IO.StringReader sr;
3 //要打印的字符串
4 private void redstr()
5 {
6 StringBuilder ojbbulider = new StringBuilder();
7 ojbbulider.Append("\n");
8 ojbbulider.Append ("测试1");
9 ojbbulider.Append("测试2");
10 ojbbulider.Append("------------------------------");
11 ojbbulider.Append("测试3");
12 ojbbulider.Append("\n");
13 sr = new System.IO.StringReader(ojbbulider.ToString());
14 }
15 //打印方法
16 private void button1_Click(object sender, EventArgs e)
17 {
18 try
19 {
20 if (printDialog1.ShowDialog() == DialogResult.OK)
21 {
22 printDocument1.Print();
23 }
24 }
25 catch (Exception ex)
26 {
27 MessageBox.Show("打印时出错" + ex.Message.ToString().Trim());
28 }
29 }
30
31 //打印预览
32 private void button2_Click(object sender, EventArgs e)
33 {
34 try
35 {
36
37 printPreviewDialog1.ShowDialog();
38 }
39 catch (Exception ex)
40 {
41 MessageBox.Show("预览时出错" + ex.Message.ToString().Trim());
42 }
43 }
44
45 //打印设置
46 private void button3_Click(object sender, EventArgs e)
47 {
48 try
49 {
50 pageSetupDialog1.ShowDialog();
51 }
52 catch (Exception ex)
53 {
54 MessageBox.Show("设置时出错" + ex.Message.ToString().Trim());
55 }
56 }
57
58 private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
59 {
60 Graphics objgraphics = e.Graphics;
61 e.Graphics.DrawString("测试", new Font(new FontFamily("宋体"), 10F), Brushes.Black, 10, 2);
62 redstr();
63 Font ziti = new Font(new FontFamily("宋体"), 10F);
64 //行高
65 float h = ziti.GetHeight(objgraphics);
66 //每一面的行数
67 float hangshu = (int)(e.MarginBounds.Height/h);
68 float left = e.MarginBounds.Left;
69 float top = e.MarginBounds.Top;
70
71 string str = "";
72 for (int i = 0; i < hangshu; i++)
73 {
74 str = sr.ReadLine();
75 if (str == null)
76 {
77 //没有下一页
78 e.HasMorePages = false;
79 return;
80 }
81 float x = left;
82 float y = top + h*i;
83 objgraphics.DrawString(str, ziti, new SolidBrush(Color.Black), x, y,new StringFormat());
84 }
85 //有下一页
86 e.HasMorePages = true;
87 }
88 }