private void printDocument_Tijian_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            for (int a = 0; a < dgv_tjhm.Rows.Count; a++)
            {
                string tjhm, brxm, sjks, sjys, qtbz;
                tjhm = dgv_tjhm.Rows[a].Cells[0].Value.ToString();
                brxm = dgv_tjhm.Rows[a].Cells[1].Value.ToString();
                sjks = dgv_tjhm.Rows[a].Cells[2].Value.ToString();
                sjys = dgv_tjhm.Rows[a].Cells[3].Value.ToString();
                qtbz = dgv_tjhm.Rows[a].Cells[9].Value.ToString();                Font font_title = new Font("宋体", 8, FontStyle.Bold);//病人姓名字体格式
                Font font_brxx = new Font("黑体", 14, FontStyle.Bold);//其余文字的字体格式
                Font font_txm = new Font("C39HrP60DmTt", 35);//条形码字体
                Font font_beizhu = new Font("宋体", 6, FontStyle.Bold);//增加备注的字体格式
                e.Graphics.DrawString("*." + tjhm + "*", font_txm, Brushes.Black, 5, 10);                e.Graphics.DrawString("条形码", font_title, Brushes.Black, 120, 30);                e.Graphics.DrawString(brxm, font_brxx, Brushes.Black, (float)215 / 2 - e.Graphics.MeasureString(brxm, font_brxx).Width / 2, 65);                e.Graphics.DrawString(sjks, font_brxx, Brushes.Black, (float)215 / 2 - e.Graphics.MeasureString(sjks, font_brxx).Width / 2, 90);                e.Graphics.DrawString("备注:" + qtbz, font_beizhu, Brushes.Black, 15, 115);
            }
        }        private void btn_print_Click(object sender, EventArgs e)
        {                try
                {
                    printDocument_Tijian.DocumentName = "条形码";
                    printDocument_Tijian.PrinterSettings.PrinterName = selectedprinter;
                    printDocument_Tijian.PrintController = new System.Drawing.Printing.StandardPrintController();//不显示“正在打印”  
                    this.printDocument_Tijian.Print();
                    dgv_tjhm.Focus();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
            
        }
原来是打印datagridview中的单条记录的,现在要批量所有记录。请问应该怎么写?
现在这样写的结果是:所有记录重叠打印在一张纸上了。

解决方案 »

  1.   

    PrintPageEventArgs  有个参数叫 HasMorePage ,设置为真时,一页打完后,会继续打。你可以判断下,是否到了datagridview的最后一条记录。
    当然,一页能打印多少条记录,你要计算的
      

  2.   

    您可能误解了我的意思,我不是把datagridview按那种表格形式打印的。我是自动走纸的那种标签打印机,一张标签上打一条记录,我没有用报表来做,想用循环。
      

  3.   

    循环的话就多打几次好了 你的循环不应该在PrintPage事件里面,PrintPage事件只处理当前打印页的操作。应该是在 Button的点击事件里面,这样就可以打印多页了。
      

  4.   

    感谢您的答复!我的button的click事件中循环时只是把printpage事件要打印的页面循环打印了多次,并没有能够依次打印我所要的内容,正为此纠结呢,烦请赐教!