C# 如何使用页眉和页脚中的文本打印DataGridView?

C# 如何使用页眉和页脚中的文本打印DataGridView?,c#,windows,winforms,C#,Windows,Winforms,我编写了以下代码,用于在windows c#中从DataGridView打印数据。 但我想打印一个图像,页眉和页脚中的文本 private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { Bitmap bm = new Bitmap(this.SalesGridView.Width, this.SalesGridView.Hei

我编写了以下代码,用于在windows c#中从DataGridView打印数据。 但我想打印一个图像,页眉和页脚中的文本

    private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
    {
        Bitmap bm = new Bitmap(this.SalesGridView.Width, this.SalesGridView.Height);
        SalesGridView.DrawToBitmap(bm, new Rectangle(0, 0, this.SalesGridView.Width, this.SalesGridView.Height));
        e.Graphics.DrawImage(bm, 0, 0);            
    }

    private void btnPrint_Click(object sender, EventArgs e)
    {
        printDocument1.Print();
    } 

当前的代码将DataGridView转换为位图,然后打印该位图。要在DataGridView之外打印文本页眉和页脚,需要使用
Graphics.DrawString()
方法:

// Create string to draw.
String drawString = "Sample Text";

// Create font and brush.
Font drawFont = new Font("Arial", 16);
SolidBrush drawBrush = new SolidBrush(Color.Black);

// Create point for upper-left corner of drawing.
PointF drawPoint = new PointF(150.0F, 150.0F);

// Draw string to screen.
e.Graphics.DrawString(drawString, drawFont, drawBrush, drawPoint);
}
您必须调整每个图形定位的浮点值。例如,您的代码
E.Graphics.DrawImage(bm,0,0)打印位置(0,0)处的位图bm。因此,页眉、页脚和DataGridView对象位置的位置需要根据其大小进行更改


如果您想在多个页面上打印,并以编程方式将页眉和页脚添加到每个页面。

目前这个问题有点宽泛。您可以发布更多显示您正在打印的主文档的代码吗?我假设您已经发布的代码就是您想要尝试并附加的图像。您还可以解释一下您使用的是什么打印API吗?人们猜测的越少,问题的针对性越强,就越有可能得到一个好的答案。代码应该打印整个DWG,对吗?如果你只想打印零件,你需要一个接一个地编写DrawString和DrawImage方法。实际上,我正在为杂货店开发一个应用程序。在制作账单时,我正在dataGridiView中添加所有项目,包括项目名称、采购数量、项目价格和总价。此dataGridView是带有dataTable的字段。实际上,当任何人打印此销售商品时,它将打印店铺的页眉图像和一些其他数据,如日期等,页脚也可以是店铺地址等。您确实不应该尝试使用从DrawToBitmap创建的位图。它将有一个非常低的质量和可能的各种其他问题,如背景色和网格线等。。。相反,您应该对PrintPage事件进行编码,并完成所有动作,以准确打印所需内容。有关拟态示例,请参见。你会画你的页眉和页脚,并在行和单元格之间循环。谢谢Taw,你真的帮助了我做了很多事情,但有一件事,假设我必须打印两页,在页脚中需要一些文本,如地址和联系号码。我如何在底部的所有页面中重复,也尝试显示本地文件夹中的图像,但仍然没有成功。