请教printdocument的批量打印问题。
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中的单条记录的,现在要批量所有记录。请问应该怎么写?
现在这样写的结果是:所有记录重叠打印在一张纸上了。 --------------------编程问答-------------------- PrintPageEventArgs 有个参数叫 HasMorePage ,设置为真时,一页打完后,会继续打。
你可以判断下,是否到了datagridview的最后一条记录。
当然,一页能打印多少条记录,你要计算的
--------------------编程问答--------------------
您可能误解了我的意思,我不是把datagridview按那种表格形式打印的。我是自动走纸的那种标签打印机,一张标签上打一条记录,我没有用报表来做,想用循环。 --------------------编程问答-------------------- 循环的话就多打几次好了 你的循环不应该在PrintPage事件里面,PrintPage事件只处理当前打印页的操作。应该是在 Button的点击事件里面,这样就可以打印多页了。 --------------------编程问答--------------------
感谢您的答复!我的button的click事件中循环时只是把printpage事件要打印的页面循环打印了多次,并没有能够依次打印我所要的内容,正为此纠结呢,烦请赐教!
补充:.NET技术 , C#