Hi change your PrintPage method as below ..
here countInRow is the count of barcode in a row on each page to display ..
int countInRow = 3; // number of barcode in a row on every page.
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
panel1_Paint(sender, new PaintEventArgs(e.Graphics, this.ClientRectangle));
int locCount = SaveBeforePrint.Count;
for (int i = 0; i < countInRow && i < locCount; i++)
{
SaveBeforePrint.RemoveAt(0); //remove the top element always
}
e.HasMorePages = (SaveBeforePrint.Count > 0);
}
you have to make one more change in "panel1_Paint" method also, change the for loop condition
private void panel1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
.
.
.
for (int serial = 0; serial < SaveBeforePrint.Count && serial < countInRow; serial++)
{
// you code goes here..
}
.
.
.
}