当前位置:编程学习 > C#/ASP.NET >>

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#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,