2013-12-08 82 views
1

我有一個位圖,我希望用戶在打印之前看到它。所以我打開他的打印預覽,如果用戶決定打印我想執行一些代碼。顯示用戶打印預覽並執行代碼如果他打印

問題是,printPreviewDialog將不會返回答案。這可能是因爲它只有一個打印按鈕和關閉按鈕,但沒有打印和關閉,因此我可以知道用戶決定打印。

如果您有解決方案,我會很高興,如果您認爲這不是最好的方式,請告訴我。

代碼:

 PrintDocument pd = new PrintDocument(); 
     pd.PrintPage += new PrintPageEventHandler(Print_Page); 
     PrintPreviewDialog pritdlg = new PrintPreviewDialog(); 
     pritdlg.Document = pd; 

     if (pritdlg.ShowDialog() == DialogResult.OK) 
      pd.Print(); 
     else 
      MessageBox.Show("you have canceled print"); 


     private void Print_Page(object o, PrintPageEventArgs e) 
     { 
     e.Graphics.DrawImage(target, 0,0); 
     } 
+1

你能提供你已經試過什麼碼? –

+0

是的,我剛剛編輯我的問題 – user1913615

回答

2

訂閱EndPrint事件要發送到printPreviewDialog控制的文件,然後檢查PrintAction在其PrintEventArgs說法。

例子:

private void buttonPrintPreview_Click(object sender, EventArgs e) 
    { 
     PrintPreviewDialog printDialog = new PrintPreviewDialog(); 
     printDialog.Document = yourDocument; 
     yourDocument.EndPrint += doc_EndPrint; // Subscribe to EndPrint event of your document here. 
     printDialog.ShowDialog(); 
    } 

    void doc_EndPrint(object sender, System.Drawing.Printing.PrintEventArgs e) 
    { 
     if (e.PrintAction == System.Drawing.Printing.PrintAction.PrintToPrinter) 
     { 
      // Printing to the printer! 
     } 
     else if (e.PrintAction == System.Drawing.Printing.PrintAction.PrintToPreview) 
     { 
      // Printing to the preview dialog! 
     } 
    }