Show Print Dialog before printing
53,693
Solution 1
You have to use 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");
}
Edited(from Comment)
On 64-bit
Windows and with some versions of .NET you may have to set pdi.UseExDialog = true
; for the dialog window to appear.
Solution 2
For the sake of completeness, the code should include a using directive
using System.Drawing.Printing;
for further reference please goto PrintDocument Class
Author by
user2257581
Updated on July 09, 2022Comments
-
user2257581 almost 2 years
I want to show the print dialog box before printing the document, so the user can choose another printer before printing. The code for printing is:
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); }
will this code be able to print the current form?
-
user2257581 about 11 yearswhen press the button,print dialog does not open,but the messagebox displaying Print Cancelled is shown
-
KF2 about 11 years@ user2257581:i test it now,it work,make a new application and test it again,see it work
-
Thomas Gerstendörfer about 11 yearsOn 64-bit Windows and with some versions of .NET you may have to set
pdi.UseExDialog = true;
for the dialog window to appear. See stackoverflow.com/q/6385844/202010 for details. -
user2257581 about 11 years@ThomasGerstendörfer where to write that code? before the
if
statement? -
Thomas Gerstendörfer about 11 years@user2257581 Yes, just above or below the
pdi.Document = pd;
line. -
Shumii over 10 yearsNot sure why I am the only one experiencing this but pdi (PrintDialog) does not have a Document property for me...
-
Grx70 about 9 years@Shumii That's probably because you're using
System.Windows.Controls.PrintDialog
fromPresentationFramework.dll
whereas the answer refers toSystem.Windows.Forms.PrintDialog
fromSystem.Windows.Forms.dll
.