我必须打印很多条形码。如果我使用此代码块打印单个条形码,如何在循环中执行此操作:
p.PrintPage += delegate(object sender1, PrintPageEventArgs e1) {
e1.Graphics.DrawString("TITLE", new Font("Univers 55", 6), new SolidBrush(Color.Black), new RectangleF(titleX, titleY, p.DefaultPageSettings.PrintableArea.Width, p.DefaultPageSettings.PrintableArea.Height));
e1.Graphics.DrawString(s, new Font("Barcode", 24), new SolidBrush(Color.Black), new RectangleF(codeX, codeY, p.DefaultPageSettings.PrintableArea.Width, p.DefaultPageSettings.PrintableArea.Height));
e1.Graphics.DrawString(test, new Font("Univers 55", 8), new SolidBrush(Color.Black), new RectangleF(numberX, numberY, p.DefaultPageSettings.PrintableArea.Width, p.DefaultPageSettings.PrintableArea.Height));
};
titleX , titleY , codeX , codeY , numberX , numberY 是存储每个条形码对象(标题,条纹和数字)三个部分位置的变量,它们应该在循环中改变自己。
答案 0 :(得分:2)
如果你想在一个页面上打印多个条形码,没有什么能阻止你把它们放在一个循环中。我会将代码移动到一个单独的方法,而不是“内联委托”,以保持其清洁:
p.PrintPage += PrintPage;
...
private void PrintPage(object sender, PrintPageEventArgs e)
{
for (int i = 0; i < numberOfBarcodes; i++)
{
int titleY = i * titleYdistance + titleYoffset;
// etc.
e.Graphics.DrawString(...);
// etc.
}
}
如果您拥有的内容多于单个页面上的内容,则PrintPageEventArgs
类具有HasMorePages
属性。只要您将此属性设置为true
,就会调用事件方法,允许您为每个页面打印不同的条形码。