请教printdocument的批量打印问题。

ntjerome 2011-03-29 01:16:12

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中的单条记录的,现在要批量所有记录。请问应该怎么写?
现在这样写的结果是:所有记录重叠打印在一张纸上了。
...全文
465 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ntjerome 2011-03-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xxiju203 的回复:]
循环的话就多打几次好了 你的循环不应该在PrintPage事件里面,PrintPage事件只处理当前打印页的操作。应该是在 Button的点击事件里面,这样就可以打印多页了。
[/Quote]
感谢您的答复!我的button的click事件中循环时只是把printpage事件要打印的页面循环打印了多次,并没有能够依次打印我所要的内容,正为此纠结呢,烦请赐教!
xxiju203 2011-03-29
  • 打赏
  • 举报
回复
循环的话就多打几次好了 你的循环不应该在PrintPage事件里面,PrintPage事件只处理当前打印页的操作。应该是在 Button的点击事件里面,这样就可以打印多页了。
ntjerome 2011-03-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 whrspsoft3723 的回复:]
PrintPageEventArgs 有个参数叫 HasMorePage ,设置为真时,一页打完后,会继续打。

你可以判断下,是否到了datagridview的最后一条记录。
当然,一页能打印多少条记录,你要计算的
[/Quote]
您可能误解了我的意思,我不是把datagridview按那种表格形式打印的。我是自动走纸的那种标签打印机,一张标签上打一条记录,我没有用报表来做,想用循环。
whrspsoft3723 2011-03-29
  • 打赏
  • 举报
回复
PrintPageEventArgs 有个参数叫 HasMorePage ,设置为真时,一页打完后,会继续打。

你可以判断下,是否到了datagridview的最后一条记录。
当然,一页能打印多少条记录,你要计算的

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧