我试图自动打印一系列Windows窗体。我不需要显示它们。我在互联网上找到的代码示例只有在使用show()
时才有效!我需要用数据初始化表单并将其发送到打印机。这是我正在使用的代码:
public partial class Form2_withoutShow : Form{
PrintDocument PrintDoc;
Bitmap memImage;
public Form2_withoutShow (Data data)
{
InitializeComponent();
/*
Initialize Data (texboxes, charts ect.) here
*/
this.PrintDoc = new PrintDocument();
this.PrintDoc.PrintPage += PrintDoc_PrintPage;
this.PrintDoc.DefaultPageSettings.Landscape = true;
}
public void Print()
{
this.PrintDoc.Print();
}
void PrintDoc_PrintPage(object sender, PrintPageEventArgs e)
{
int x = SystemInformation.WorkingArea.X;
int y = SystemInformation.WorkingArea.Y;
int width = this.Width;
int height = this.Height;
Rectangle bounds = new Rectangle(x, y, width, height);
Bitmap img = new Bitmap(width, height);
this.DrawToBitmap(img, bounds);
Point p = new Point(10, 10);
e.Graphics.DrawImage(img, p);
}
private void Form2_withoutShow_Load(object sender, EventArgs e)
{
// remove TITLEBar
this.ControlBox = false;
this.Text = String.Empty;
}
}
我在另一个类的for循环中调用Print()
方法,并通过构造函数传递要初始化的数据。
MSDN示例捕获了应该显示表单部分的屏幕内容。但这对我没有用。现在我正在使用的方法只会打印空窗口,如果不调用show()
方法。如何将数据传递到表单中而不必调用show()
方法?例如在显示时最小化窗口的方法也不起作用,因为那也是打印结果:一个最小化的窗口。