我的是在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);
}
}
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);
}
}
解决方案 »
- show().和ShowDialog()有什么区别。为什么这个事件只能在SHOW里用?
- 关于.NET调用dll生成二维码的问题
- 同步获得网络信息??
- 关于XmlNode.InsertAfter()
- 想做一个收集文章的软件,下面的内容不知道如何做?高分寻助。
- 获取网页数据遇到一些问题,各位帮忙看一下
- 在导出Excel时,如何添加多个Worksheets对象??保存Excel文件时出错??
- webform和mvc
- 求教:如何定制一个OpenFileDialog
- 急!一定救我啊!!C#程序WIN98下为何不能起中文名?(详情请进入)
- 用循环方法取多个CheckBox的值并赋值给textbox
- VS2005中的图片保存问题
{
e.HasMorePages = true;
}
else
{
e.HasMorePages = false;
}
//////////////////////////////////////
但是如果DAG中并没有这么多行,比如只有10行,那么pageRows是20,运行是会出错的,因为DAG中就只有10行啊,其他的就找不到了,而i还是会在继续加1。我是直接用DAG中的数据来填充的
难道要在加个IF来判断是否pageRows大于DAV.Rows.Count。如果大的话就用你说的FOR.如果小就用i<dav.rows.count???不过这样看起来很不那个 啊
{
pageRows=Rows.Count-index;
}分页的思路就是这样.
可以数据导在excel上再打印出来~
linesparpage是你每页要打的行数,自己大概计算下。
linNo是你dataGridView1读到的row index.
lineQty你总共需要打印的行数while (count < linesPerPage && lineNo < lineQty)
{
if (lineNo < dataGridView1.Rows.Count) //由于lineNo用于表中的下标值,因此需要加判断
{
g.DrawString(dataGridView1.Rows[lineNo].Cells[1].Value.ToString(), font, bru, nLeft + 100, nTop + hj + 4); //这里是你的循环
count++;
}
lineNo++;
}
//下面分页要放在循环之外
if (lineQty > lineNo)
{
count = 0;
printingPageNo++;
e.HasMorePages = true;
return;
}
else
{
count++;
e.HasMorePages = false;
lineNo = 0;
lineQty = 0;
}