阅读全文:http://www.cckan.net/forum.php?mod=viewthread&tid=37

先拉下面两个控件

一个打印的好例子_i++

然后看一下代码就明白了

每打印一页的时候要使用的事件

                                                                                                                                                                                                          

 

一个打印的好例子_.net_02一个打印的好例子_数据_03代码
  private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            Graphics graphics = e.Graphics;
            e.Graphics.DrawString("社区便民 服务百姓", new Font("Arial", 13f, FontStyle.Bold), Brushes.Black, 10, 1);
            redstr();

            Font ziti = new Font(new FontFamily("宋体"), 10F, FontStyle.Bold);
            //行高
            float h = ziti.GetHeight(graphics);
            //每一页的行数
            float hangshu = (int)(e.MarginBounds.Height / h); ;
            //在边矩
            //float left = e.MarginBounds.Left;
            float left = 3;
            //float shang = e.MarginBounds.Top;
            float shang = 45;
            string str = "";
            for (int i = 0; i <= hangshu; i++)
            {
                str = sr.ReadLine();
                if (str == null)
                {
                    e.HasMorePages = false;
                    return;
                }
                float x = left;
                float y = shang + i * h;
                graphics.DrawString(str, ziti, new SolidBrush(Color.Black), x, y, new StringFormat());
            }
            e.HasMorePages = true;
        }

 

打印的内容

 

一个打印的好例子_.net_02一个打印的好例子_数据_03代码
  //打印
        private StringReader sr;

        //要打印的数据
        private void redstr()
        {
            StringBuilder builder1 = new StringBuilder();
            builder1.Append("......................");
            builder1.Append("\n");
            builder1.Append("名  称: 中国铁路");
            builder1.Append("\n");
            builder1.Append("车  次: " + txtCheCi.Text.Trim());
            builder1.Append("\n");
            builder1.Append("起始站: " + txtStart.Text.Trim());
            builder1.Append("\n");
            builder1.Append("到达站: " + txtEnd.Text.Trim());
            builder1.Append("\n");
            builder1.Append("席  别: " + cbbxibie.Text.Trim());
            builder1.Append("\n");
            builder1.Append("数  量: " + nudNumber.Value.ToString().Trim() + "张");
            builder1.Append("\n");
            builder1.Append("单  价: " + txtPrice.Text.Trim() + "元");
            builder1.Append("\n");
            string shoufei = user.tran1(objOfficeInfo.ofPara1, nudNumber.Value * Convert.ToDecimal(txtPrice.Text.Trim()));
            builder1.Append("手续费: " + shoufei + "元");
            builder1.Append("\n");
            builder1.Append("总  价: " + (Convert.ToDecimal(shoufei) + nudNumber.Value * Convert.ToDecimal(txtPrice.Text.Trim())).ToString().Trim() + "元");
            builder1.Append("\n");
            builder1.Append("订票时间:");
            builder1.Append("\n");
            builder1.Append(timeStart.Value.ToString().Trim() + "-\n" + timeEnd.Value.ToString().Trim());
            builder1.Append("\n");
            builder1.Append("......................");
            builder1.Append("\n");
            builder1.Append("注:铁路客运车次、车票变化");
            builder1.Append("\n");
            builder1.Append("以铁路客运官方信息为准,此");
            builder1.Append("\n");
            builder1.Append("单据仅作订票凭证。");
            builder1.Append("\n");
            builder1.Append("打印时间:\n" + DateTime.Now.ToString());
            builder1.Append("\n");
            builder1.Append("营业编号:" + objOfficeInfo.ofLogin);
            builder1.Append("\n");
            builder1.Append("营业电话:" + objOfficeInfo.ofPhone);
            builder1.Append("\n");

            string str = objOfficeInfo.ofAddress.ToString();
            string str1 = "";
            if (str.Length > 1)
            {
                str1 += str.Substring(0, 1);
                for (int i = 1; i < str.Length; i++)
                {
                    if (i % 7 != 0)
                    {
                        str1 += str.Substring(i, 1);
                    }
                    else
                    {
                        str1 += str.Substring(i, 1) + "\n";
                    }
                }
            }
            else
            {
                str1 = str;
            }

            builder1.Append("营业地址:" + str1);
            builder1.Append("\n");
            builder1.Append("......................");
            builder1.Append("\n");
            builder1.Append("全国加盟热线:15639808693");
            builder1.Append("\n");
          
            sr = new StringReader(builder1.ToString());
        }

 

开始打印

 

 

一个打印的好例子_.net_02一个打印的好例子_数据_03代码
 try
                                {
                                    printDocument1.Print();
                                }
                                catch (Exception)
                                {
                                    MessageBox.Show("打印时出错");
                                }