2013-10-11 16 views
6

Sto provando l'esempio di stampa di MSDN utilizzando PrintDocument, ma non sta andando così bene. Ho compilato tutto, ma quando premo stampa, viene visualizzata una finestra "Impostazioni invio fax". Questo dovrebbe succedere? Sto cercando di stampare, non inviare un fax!Stampa moduli utilizzando PrintDocument

Cosa dovrei cambiare per stampare direttamente sulla stampante predefinita?

Grazie!

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); 
    } 

} 
} 
+1

Si prega di visualizzare lo http://stackoverflow.com/questions/15985909/show-print-dialog-before-printing è necessario anche creare PrintDialog. – progpow

+1

@StanislavAgeyev: Immagino che questo si adatta meglio: http://stackoverflow.com/questions/5164323/how-to-set-to-default-printer –

+0

Ho aggiunto il dialogo di stampa, ora mostra, e quindi le impostazioni del fax mostrano . – Nathan

risposta

2

E 'sembra un fax è la stampante predefinita, il modo più semplice per porre rimedio a questa potrebbe essere quella di aggiungere una finestra di dialogo di stampa prima di stampare la pagina

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

Questo permetterà all'utente di selezionare la loro desiderata stampante prima di stampare

2

Firs si dovrebbe dichiarare un oggetto di System.Drawing.Printing.PrintDocument:

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

quindi aggiungere il codice descritto nella risposta precedente:

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