打印前显示“打印”对话框

我想在打印文档之前显示打印对话框,因此用户可以在打印前选择其他打印机。 打印代码是:

private void button1_Click(object sender, EventArgs e) { try { PrintDocument pd = new PrintDocument(); pd.PrintPage += new PrintPageEventHandler(PrintImage); pd.Print(); } catch (Exception ex) { MessageBox.Show(ex.Message, ToString()); } } void PrintImage(object o, 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(100, 100); e.Graphics.DrawImage(img, p); } 

这段代码能够打印当前表格吗?

你必须使用PrintDialog

  PrintDocument pd = new PrintDocument(); pd.PrintPage += new PrintPageEventHandler(PrintPage); PrintDialog pdi = new PrintDialog(); pdi.Document = pd; if (pdi.ShowDialog() == DialogResult.OK) { pd.Print(); } else { MessageBox.Show("Print Cancelled"); } 

编辑 (来自评论)

64-bit Windows和某些版本的.NET上,您可能必须设置pdi.UseExDialog = true ; 用于显示对话框窗口。

为了完整起见,代码应包含using指令

 using System.Drawing.Printing; 

如需进一步参考,请转到PrintDocument类