2013-04-13 17 views
7

文書を印刷する前に印刷ダイアログボックスを表示して、印刷前に別のプリンタを選択することができます。印刷用のコードは次のとおりです。印刷する前にダイアログを表示する

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

このコードは現在のフォームを印刷できますか?

答えて

15

はあなたがpdi.UseExDialog = trueを設定する必要があり64-bit Windows上

(コメントから)と.NETの一部のバージョンで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"); 
} 

編集を使用する必要があります。ダイアログウィンドウが表示されます。

+0

ボタンを押し、印刷ダイアログが開きませんが、メッセージボックスは、Printを表示するときキャンセルされました – user2257581

+0

@ user2257581:私は今すぐテストして、動作し、新しいアプリケーションを作り、もう一度テストしてみてください。 – KF2

+2

64ビット版Windowsと.NETのいくつかのバージョンでは、 'pdi.UseExDialog = true; 'ダイアログウィンドウが表示されます。詳細については、http://stackoverflow.com/q/6385844/202010を参照してください。 –

1

完全を期すために、コードはさらに、参照用に使用してディレクティブ

using System.Drawing.Printing; 

を含めるべきである後藤ください PrintDocument Class

関連する問題