Printing Forms Using PrintDocument

I am trying to use the MSDN print example using PrintDocument, but this is not so good. I have everything to compile, but when I click print, the Fax Sending Options window appears. Is this supposed to happen? I'm trying to print, not send a fax!

What do I need to change to print this directly to the default printer?

Thanks!

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; using System.Drawing.Printing; namespace WindowsFormsApplication1 { public partial class Form4 : System.Windows.Forms.Form { private System.ComponentModel.Container components; private System.Windows.Forms.Button printButton; private Font printFont; private StreamReader streamToPrint; public Form4() { // The Windows Forms Designer requires the following call. InitializeComponent(); } // The Click event is raised when the user clicks the Print button. private void printButton_Click(object sender, EventArgs e) { PrintDocument pd = new PrintDocument(); pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage); pd.Print(); } // The PrintPage event is raised for each page to be printed. private void pd_PrintPage(object sender, PrintPageEventArgs e) { Single yPos = 0; Single leftMargin = e.MarginBounds.Left; Single topMargin = e.MarginBounds.Top; Image img = Image.FromFile("logo.bmp"); Rectangle logo = new Rectangle(40, 40, 50, 50); using (Font printFont = new Font("Arial", 10.0f)) { e.Graphics.DrawImage(img, logo); e.Graphics.DrawString("Testing!", printFont, Brushes.Black, leftMargin, yPos, new StringFormat()); } } // The Windows Forms Designer requires the following procedure. private void InitializeComponent() { this.components = new System.ComponentModel.Container(); this.printButton = new System.Windows.Forms.Button(); this.ClientSize = new System.Drawing.Size(504, 381); this.Text = "Print Example"; printButton.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; printButton.Location = new System.Drawing.Point(32, 110); printButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; printButton.TabIndex = 0; printButton.Text = "Print the file."; printButton.Size = new System.Drawing.Size(136, 40); printButton.Click += new System.EventHandler(printButton_Click); this.Controls.Add(printButton); } } } 
+6
source share
2 answers

It looks like the fax machine is the default printer, the easiest way to fix this would be to add a print dialog before printing the page

 PrintDialog printDialog = new PrintDialog(); printDialog.Document = printDocument; //Show Print Dialog if (printDialog.ShowDialog() == DialogResult.OK) { //Print the page printDocument.Print(); } 

This will allow the user to select the correct printer before printing.

+2
source

Firs you must declare a System.Drawing.Printing.PrintDocument object:

 private System.Drawing.Printing.PrintDocument printDocument = new System.Drawing.Printing.PrintDocument(); 

Then add the code described in the previous answer:

 PrintDialog printDialog = new PrintDialog(); printDialog.Document = printDocument; //Show Print Dialog if (printDialog.ShowDialog() == DialogResult.OK) { //Print the page printDocument.Print(); } 
+2
source

Source: https://habr.com/ru/post/955780/


All Articles