以下这个打印程序在打印的时候在第一页的时候打印正确,是3行5列的打印纸,在分页的时候却出现问题,位置x,y发生错误,不和第一页一样位置打印了,请问我的程序分页错误吗?请高人帮我看看!
public PrtInfor(DataGridView dataGridView)
        {
            this.dataGridView = dataGridView;
            printDocument = new PrintDocument();
            printDocument.DefaultPageSettings.PaperSize = psLT;
            printDocument.DefaultPageSettings.Landscape = false;//设置为横向
            printDocument.PrintPage += new PrintPageEventHandler(this.printDocument_PrintPage);
        }        private void printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            
            rowCount = dataGridView.Rows.Count - 1;//行数
            colCount = dataGridView.ColumnCount;//列数
            x = leftMargin;
            int z = 0;
           
            for (; i <= rowCount; i++)
            {
                if (ThreeNumber(i / 4) == 0)
                {
                    y = cardNumberH;  
                }
                else if (ThreeNumber(i / 4) == 1)
                {
                    y = 500;
                    if ((z <= 2) && (z > 0))
                    {
                        z += 1;
                    }
                    else if (z == 3)
                    {
                        z = 0;
                    }
                    else
                    {
                        x = 22;
                        z += 1;
                    } 
                }                
                else if (ThreeNumber(i / 4) == 2)
                {
                    y = 901;
                    if ((z <= 3) && (z > 0))
                    {
                        z += 1;
                    }
                    else if (z == 4)
                    {
                        z = 0;
                    }
                    else
                    {
                        x = 22;
                        z += 1;
                    } 
                }                                 
                for (int j = 0; j < colCount; j++)
                {
                    if (j == 0)
                    {
                            cellValue = dataGridView.Rows[i].Cells[j].Value.ToString();
                            //e.Graphics.DrawRectangle(Pens.White, x, y, dataGridView.Columns[j].Width, rowGap);
                            Point drawPoint = new Point(x, y);
                            e.Graphics.DrawString(cellValue, font, brush, drawPoint);
                            y += passwordH;//设置打印的每列高度                        
                    }
                    if (j == 1)
                    {
                        cellValue = dataGridView.Rows[i].Cells[j].Value.ToString();
                        //e.Graphics.DrawRectangle(Pens.White, x, y, dataGridView.Columns[j].Width, rowGap);
                        Point drawPoint = new Point(x, y);
                        e.Graphics.DrawString(cellValue, font, brush, drawPoint);
                        y += moneyH;//设置打印的每列高度 
                    }
                    if (j == 2)
                    {
                        cellValue = dataGridView.Rows[i].Cells[j].Value.ToString();
                        //e.Graphics.DrawRectangle(Pens.White, x, y, dataGridView.Columns[j].Width, rowGap);
                        Point drawPoint = new Point(x, y);
                        e.Graphics.DrawString(cellValue, font, brush, drawPoint);
                        y += endDataH;//设置打印的每列高度 
                    }
                    if (j == 3)
                    {
                        cellValue = dataGridView.Rows[i].Cells[j].Value.ToString();
                        //e.Graphics.DrawRectangle(Pens.White, x, y, dataGridView.Columns[j].Width, rowGap);
                        Point drawPoint = new Point(x, y);
                        e.Graphics.DrawString(cellValue, font, brush, drawPoint);
                        y += snH;//设置打印的每列高度 
                    }
                    if (j == 4)
                    {
                        cellValue = dataGridView.Rows[i].Cells[j].Value.ToString();
                        //e.Graphics.DrawRectangle(Pens.White, x, y, dataGridView.Columns[j].Width, rowGap);
                        Point drawPoint = new Point(x, y);
                        e.Graphics.DrawString(cellValue, font, brush, drawPoint);
                        //y += 75;//设置打印的每列高度 
                    }
                                        
                }
                x += 291;  //设置打印的每列的宽度
                if ((i + 1) % 12 == 0)
                {
                    //允许多页打印
                    i++;
                    y = cardNumberH;
                    e.HasMorePages = true;
                    
                    return;
                }            }                            
                
            e.HasMorePages = false;
        }