2013-04-13 9 views
7

Drucken Ich möchte das Druckdialogfeld anzuzeigen, bevor das Dokument gedruckt wird, so dass der Benutzer einen anderen Drucker vor dem Drucken wählen. Der Code für den Druck ist:Show Print Dialog vor

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

wird dieser Code in der Lage das aktuelle Formular drucken?

Antwort

15

Sie haben 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"); 
} 

Herausgegeben (von Kommentar)

Auf 64-bit Windows- und mit einigen Versionen von .NET verwenden, können Sie pdi.UseExDialog = true eingestellt haben; damit das Dialogfenster erscheint.

+0

wenn die Taste drücken, tut Druckdialog nicht geöffnet, aber die messagebox Print Anzeigen Abgebrochen wird – user2257581

+0

@ user2257581 gezeigt: ich kann es jetzt testen, es funktioniert, eine neue Anwendung machen und es erneut testen, sehen es – KF2

+2

auf 64-Bit-Windows arbeiten und mit einigen Versionen von .NET können Sie festlegen, haben 'pdi.UseExDialog = true; 'damit das Dialogfenster erscheint. Weitere Informationen finden Sie unter http://stackoverflow.com/q/6385844/202010. –

1

Aus Gründen der Vollständigkeit sollte der Code eine using-Direktive

using System.Drawing.Printing; 

zur weiteren gehören bitte goto PrintDocument Class