C# 如何打印屏幕上未显示的内容

C# 如何打印屏幕上未显示的内容,c#,wpf,winforms,printing,C#,Wpf,Winforms,Printing,我一直在努力打印文档, 文档有页眉、页脚和正文, 主体(网格)对于每个不同的文档具有不同的大小。 根据网格的行数,文档可能有两种大小(A5、A4)之一 起初我使用ReportViewer控件,但它有一些问题,主要是打印2张纸,无论文档大小。经过10周的研究,我放弃了,没有任何意义 然后我试着打印一张表格,表格的所有内容(这并不容易)再次出现问题, 其中一种是不同的屏幕分辨率,更糟糕的是,如果主体有许多行,那么表单将不适合屏幕,那么它将无法打印 我的问题是: word如何打印页面的所有内容?机制是

我一直在努力打印文档, 文档有页眉、页脚和正文, 主体(网格)对于每个不同的文档具有不同的大小。 根据网格的行数,文档可能有两种大小(A5、A4)之一

起初我使用ReportViewer控件,但它有一些问题,主要是打印2张纸,无论文档大小。经过10周的研究,我放弃了,没有任何意义

然后我试着打印一张表格,表格的所有内容(这并不容易)再次出现问题, 其中一种是不同的屏幕分辨率,更糟糕的是,如果主体有许多行,那么表单将不适合屏幕,那么它将无法打印

我的问题是:
word如何打印页面的所有内容?机制是什么?
我只需要一个开头,如何打印屏幕上没有显示的内容?

我不确定这是否是您想要的,但是

您需要做的是创建一个虚拟表单,它是您想要打印的控件的大小,然后将控件添加到虚拟表单中,显示表单并在虚拟表单上打印控件

我是这样做的:

private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
    //Create bitmap
    Bitmap image = new Bitmap(dataGridView1.Width, dataGridView1.Height);
    //Create form
    Form f = new Form();
    //add datagridview to the form
    f.Controls.Add(dataGridView1);
    //set the size of the form to the size of the datagridview
    f.Size = dataGridView1.Size;
    //draw the datagridview to the bitmap
    dataGridView1.DrawToBitmap(image, new Rectangle(0, 0, dataGridView1.Width, dataGridView1.Height));
    //dispose the form
    f.Dispose();
    //print
    e.Graphics.DrawImage(image, 0, 0);
}

这将打印dataGridView1,即使它没有出现在表单上。

我终于找到了使用WPF的方法,我将在完成后发布我的代码。如果这项工作将为我节省大量时间,谢谢!我会试试看。