C#打印时按内容控制出纸量
C#打印时按内容控制出纸量这是个C#winform程序,现能正常显现打印功能。但是不能根据内容量来控制纸张的输出,不管有多少内容,只能打出一张A4纸。现在我想用代码控制打印功能,按照实际内容来控制相应的出纸量。请高手帮我解决一下。
我需要的是具体可用的代码,不需要相关的思路。在下面有相关代码和截图。谢谢。
打印代码
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
// e.Graphics.DrawString("单据打印", new System.Drawing.Font("宋体", 20, FontStyle.Bold), Brushes.Black, 350, 80);
// e.Graphics.DrawString(label2.Text, new System.Drawing.Font("宋体", 10, FontStyle.Bold), Brushes.Red, 650, 110);
e.Graphics.DrawString(label18.Text, new System.Drawing.Font("宋体", 20, FontStyle.Bold), Brushes.Black, 270, 50);
e.Graphics.DrawString(label1.Text, new System.Drawing.Font("宋体", 10, FontStyle.Regular), Brushes.Black, 80, 100);
e.Graphics.DrawLine(Pens.Black, 80, 120, 700, 120);
e.Graphics.DrawString(label2.Text, new System.Drawing.Font("宋体", 10, FontStyle.Bold), Brushes.Black, 150, 100);
e.Graphics.DrawString(label6.Text, new System.Drawing.Font("宋体", 10, FontStyle.Regular), Brushes.Black, 330, 100);
e.Graphics.DrawString(label3.Text, new System.Drawing.Font("宋体", 10, FontStyle.Bold), Brushes.Black, 400, 100);
e.Graphics.DrawString(label4.Text, new System.Drawing.Font("宋体", 10, FontStyle.Regular), Brushes.Black, 480, 100);
e.Graphics.DrawString(label5.Text, new System.Drawing.Font("宋体", 10, FontStyle.Bold), Brushes.Black, 560, 100);
try
{
if (dataGridView1.Rows[0].Cells[0].Value != null)
{
e.Graphics.DrawLine(Pens.Black, 80, 200, 80, 121);
e.Graphics.DrawString(dataGridView1.Columns[0].HeaderText, new System.Drawing.Font("宋体", 10, FontStyle.Bold), Brushes.Black, 80, 140);
e.Graphics.DrawLine(Pens.Black, 245, 200, 245, 121);
e.Graphics.DrawString(dataGridView1.Columns[1].HeaderText, new System.Drawing.Font("宋体", 10, FontStyle.Bold), Brushes.Black, 250, 140);
e.Graphics.DrawLine(Pens.Black, 320, 200, 320, 121);
e.Graphics.DrawString(dataGridView1.Columns[2].HeaderText, new System.Drawing.Font("宋体", 10, FontStyle.Bold), Brushes.Black, 330, 140);
e.Graphics.DrawLine(Pens.Black, 400, 200, 400, 121);
e.Graphics.DrawString(dataGridView1.Columns[3].HeaderText, new System.Drawing.Font("宋体", 10, FontStyle.Bold), Brushes.Black, 410, 140);
e.Graphics.DrawLine(Pens.Black, 480, 200, 480, 121);
e.Graphics.DrawString(dataGridView1.Columns[4].HeaderText, new System.Drawing.Font("宋体", 10, FontStyle.Bold), Brushes.Black, 510, 140);
e.Graphics.DrawLine(Pens.Black, 700, 200, 700, 121);
e.Graphics.DrawLine(Pens.Black, 80, 160, 700, 160);//打印横线
// e.Graphics.DrawLine(Pens.Black, 140, 150, 140, 250);//打印竖线
for ( i = 0; i < dataGridView1.Rows.Count-1; i++)
{
e.Graphics.DrawLine(Pens.Black, 80, 200 + i * 20, 80, 221 + i * 20);
e.Graphics.DrawString(dataGridView1.Rows[i].Cells[0].Value.ToString(), new System.Drawing.Font("宋体", 10, FontStyle.Regular), Brushes.Black, new PointF(80, (180 + i * 20) + 4));
e.Graphics.DrawLine(Pens.Black, 245, 200 + i * 20, 245, 221 + i * 20);
e.Graphics.DrawString(dataGridView1.Rows[i].Cells[1].Value.ToString(), new System.Drawing.Font("宋体", 10, FontStyle.Regular), Brushes.Black, new PointF(250, (180 + i * 20) + 4));
e.Graphics.DrawLine(Pens.Black, 320, 200 + i * 20, 320, 221 + i * 20);
e.Graphics.DrawString(dataGridView1.Rows[i].Cells[2].Value.ToString(), new System.Drawing.Font("宋体", 10, FontStyle.Regular), Brushes.Black, new PointF(350, (180 + i * 20) + 4));
e.Graphics.DrawLine(Pens.Black, 400, 200 + i * 20, 400, 221 + i * 20);
e.Graphics.DrawString(dataGridView1.Rows[i].Cells[3].Value.ToString(), new System.Drawing.Font("宋体", 10, FontStyle.Regular), Brushes.Black, new PointF(410, (180 + i * 20) + 4));
e.Graphics.DrawLine(Pens.Black, 480, 200 + i * 20, 480, 221 + i * 20);
e.Graphics.DrawString(dataGridView1.Rows[i].Cells[4].Value.ToString(), new System.Drawing.Font("宋体", 10, FontStyle.Regular), Brushes.Black, new PointF(480, (180 + i * 20) + 4));
e.Graphics.DrawLine(Pens.Black, 700, 200 + i * 20, 700, 221 + i * 20);
e.Graphics.DrawLine(Pens.Black, 80, 200 + i * 20, 700, 200 + i * 20);//打印横线
}
e.Graphics.DrawLine(Pens.Black, 80, 200 + i * 20, 700, 200 + i * 20);//打印横线
e.Graphics.DrawLine(Pens.Black, 80, 200 + i * 20, 80, 260 + i * 20);//顶头竖线
e.Graphics.DrawLine(Pens.Black, 700, 200 + i * 20, 700, 260 + i * 20);//底端竖线
}
else
{
MessageBox.Show("dataGridView1没数据");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
e.Graphics.DrawString(label7.Text, new System.Drawing.Font("宋体", 10, FontStyle.Regular), Brushes.Black, 450, 210 + i * 20);
e.Graphics.DrawString(label8.Text, new System.Drawing.Font("宋体", 10, FontStyle.Bold), Brushes.Black, 520, 210 + i * 20);
e.Graphics.DrawString(label15.Text, new System.Drawing.Font("宋体", 10, FontStyle.Regular), Brushes.Black, 220, 210 + i * 20);
e.Graphics.DrawString(label14.Text, new System.Drawing.Font("宋体", 10, FontStyle.Bold), Brushes.Black, 290, 210 + i * 20);
e.Graphics.DrawString(label13.Text, new System.Drawing.Font("宋体", 10, FontStyle.Bold), Brushes.Black, 80, 210 + i * 20);
e.Graphics.DrawLine(Pens.Black, 80, 225 + i * 20, 700, 225 + i * 20);//打印横线
e.Graphics.DrawString(label10.Text, new System.Drawing.Font("宋体", 10, FontStyle.Regular), Brushes.Black, 80, 240 + i * 20);
e.Graphics.DrawString(label9.Text, new System.Drawing.Font("宋体", 10, FontStyle.Bold), Brushes.Black, 130, 240 + i * 20);
e.Graphics.DrawString(label11.Text, new System.Drawing.Font("宋体", 10, FontStyle.Regular), Brushes.Black, 300, 240 + i * 20);
e.Graphics.DrawString(label19.Text, new System.Drawing.Font("宋体", 10, FontStyle.Bold), Brushes.Black, 335, 240 + i * 20);
e.Graphics.DrawString(label12.Text, new System.Drawing.Font("宋体", 10, FontStyle.Bold), Brushes.Black, 450, 240 + i * 20);
e.Graphics.DrawString(label16.Text, new System.Drawing.Font("宋体", 10, FontStyle.Regular), Brushes.Black, 550, 240 + i * 20);
e.Graphics.DrawString(label17.Text, new System.Drawing.Font("宋体", 10, FontStyle.Bold), Brushes.Black, 590, 240 + i * 20);
e.Graphics.DrawLine(Pens.Black, 80, 260 + i * 20, 700, 260 + i * 20);//打印横线
}
}
}
--------------------编程问答-------------------- 你可以在打印的时候通过控制打印机输出的纸张大小A3,A4,...之来的提到目的,只是一个思路 --------------------编程问答-------------------- 怎么没有人帮我回答啊!
补充:.NET技术 , C#