C#打印自动分页
我的是在winform窗口中放了个datagridview,要把里面的数据打印出来同时都是放在表格里的,我是自己画表格的,但是如果多出一页就不知道怎么处理了,求助????
代码如下:
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Font font = new Font("Tahoma", 10, FontStyle.Regular);//设置画笔
Font font2 = new Font("宋体", 25, FontStyle.Bold);
Brush bru = Brushes.Blue;
Pen pen = new Pen(bru);
Graphics g = e.Graphics;
pen.Width = 1;
//设置各边距
float linesPerPage = 0;
//linesPerPage = e.MarginBounds.Height / 20;
int nLeft = e.PageSettings.Margins.Left / 2;
int nTop = e.PageSettings.Margins.Top - e.PageSettings.Margins.Left + 10;
int nRight = e.PageSettings.Margins.Right / 2;
int nBottom = e.PageSettings.Margins.Bottom;
int nWidth = e.PageSettings.PaperSize.Width - nRight - nLeft;
int nHeight = e.PageSettings.PaperSize.Height - nTop - nBottom;
g.DrawString(cmbcusname.SelectedItem.ToString() + dateTimePicker1.Value.Month.ToString() + "月份" + label5.Text, font2, bru, nLeft + 200, nTop + 50);
e.Graphics.DrawLine(pen, nLeft + 534, nTop + 95, nLeft + nWidth, nTop + 95);
e.Graphics.DrawLine(pen, nLeft + 534, nTop + 95, nLeft + 534, nTop + 130);
g.DrawString("贷款金额为:" + txtPrice.Text.Trim(), font, bru, nLeft + 535, nTop + 105);
e.Graphics.DrawLine(pen, nLeft + nWidth, nTop + 95, nLeft + nWidth, nTop + 130);
e.Graphics.DrawLine(pen, nLeft, nTop + 130, nLeft + nWidth, nTop + 130);
e.Graphics.DrawLine(pen, nLeft, nTop + 130, nLeft, nTop + 160);
g.DrawString("编号", font, bru, nLeft + 5, nTop + 135);
e.Graphics.DrawLine(pen, nLeft + 95, nTop + 130, nLeft + 95, nTop + 160);
g.DrawString("订单号", font, bru, nLeft + 105, nTop + 135);
e.Graphics.DrawLine(pen, nLeft + 195, nTop + 130, nLeft + 195, nTop + 160);
g.DrawString("货号", font, bru, nLeft + 205, nTop + 135);
e.Graphics.DrawLine(pen, nLeft + 295, nTop + 130, nLeft + 295, nTop + 160);
g.DrawString("材质", font, bru, nLeft + 305, nTop + 135);
e.Graphics.DrawLine(pen, nLeft + 410, nTop + 130, nLeft + 410, nTop + 160);
g.DrawString("规格", font, bru, nLeft + 420, nTop + 135);
e.Graphics.DrawLine(pen, nLeft + 534, nTop + 130, nLeft + 534, nTop + 160);
g.DrawString("单位", font, bru, nLeft + 535, nTop + 135);
e.Graphics.DrawLine(pen, nLeft + 575, nTop + 130, nLeft + 575, nTop + 160);
g.DrawString("数量", font, bru, nLeft + 580, nTop + 135);
e.Graphics.DrawLine(pen, nLeft + 615, nTop + 130, nLeft + 615, nTop + 160);
g.DrawString("单价", font, bru, nLeft + 620, nTop + 135);
e.Graphics.DrawLine(pen, nLeft + 665, nTop + 130, nLeft + 665, nTop + 160);
g.DrawString("金额", font, bru, nLeft + 670, nTop + 135);
e.Graphics.DrawLine(pen, nLeft + nWidth, nTop + 130, nLeft + nWidth, nTop + 160);
e.Graphics.DrawLine(pen, nLeft, nTop + 160, nLeft + nWidth, nTop + 160);
int hj = 165;
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
e.Graphics.DrawLine(pen, nLeft, nTop + hj - 5, nLeft, nTop + hj + 22);
g.DrawString(dataGridView1.Rows[i].Cells[0].Value.ToString(), font, bru, nLeft + 5, nTop + hj + 4);
e.Graphics.DrawLine(pen, nLeft + 95, nTop + hj - 5, nLeft + 95, nTop + hj + 22);
g.DrawString(dataGridView1.Rows[i].Cells[1].Value.ToString(), font, bru, nLeft + 100, nTop + hj + 4);
e.Graphics.DrawLine(pen, nLeft + 195, nTop + hj - 5, nLeft + 195, nTop + hj + 22);
g.DrawString(dataGridView1.Rows[i].Cells[3].Value.ToString(), font, bru, nLeft + 200, nTop + hj + 4);
e.Graphics.DrawLine(pen, nLeft + 295, nTop + hj - 5, nLeft + 295, nTop + hj + 22);
g.DrawString(dataGridView1.Rows[i].Cells[2].Value.ToString(), font, bru, nLeft + 300, nTop + hj + 4);
e.Graphics.DrawLine(pen, nLeft + 410, nTop + hj - 5, nLeft + 410, nTop + hj + 22);
g.DrawString(dataGridView1.Rows[i].Cells[4].Value.ToString(), font, bru, nLeft + 415, nTop + hj + 4);
e.Graphics.DrawLine(pen, nLeft + 534, nTop + hj - 5, nLeft + 534, nTop + hj + 22);
g.DrawString(dataGridView1.Rows[i].Cells[5].Value.ToString(), font, bru, nLeft + 545, nTop + hj + 4);
e.Graphics.DrawLine(pen, nLeft + 575, nTop + hj - 5, nLeft + 575, nTop + hj + 22);
g.DrawString(dataGridView1.Rows[i].Cells[6].Value.ToString(), font, bru, nLeft + 580, nTop + hj + 4);
e.Graphics.DrawLine(pen, nLeft + 615, nTop + hj - 5, nLeft + 615, nTop + hj + 22);
g.DrawString(dataGridView1.Rows[i].Cells[7].Value.ToString(), font, bru, nLeft + 620, nTop + hj + 4);
e.Graphics.DrawLine(pen, nLeft + 665, nTop + hj - 5, nLeft + 665, nTop + hj + 22);
g.DrawString(dataGridView1.Rows[i].Cells[8].Value.ToString(), font, bru, nLeft + 670, nTop + hj + 4);
e.Graphics.DrawLine(pen, nLeft + nWidth, nTop + hj - 5, nLeft + nWidth, nTop + hj + 22);
//e.Graphics.DrawLine(pen, nLeft+nWidth, nTop + 130, nLeft +nWidth, nTop + hj + 30);
hj += 22;
e.Graphics.DrawLine(pen, nLeft, nTop + hj, nLeft + nWidth, nTop + hj);
}
}