2016-10-26 154 views
0

在我的C#項目中,我有2個打印功能。一個直接打印文檔,另一個則向用戶展示預覽,並在用戶選擇打印時打印。如何從打印預覽中顯示打印設置?

雖然這兩種方法都可行,但direkt打印版本在打印文檔前會顯示打印設置窗口。

private void printButton_Click(object sender, EventArgs e)  
{ 
    PrintDialog printDialog = new PrintDialog(); 
    printDialog.Document = printIssues; 
    printDialog.UseEXDialog = true; 

    if (DialogResult.OK == printDialog.ShowDialog()) 
    { 
     printIssues.DocumentName = "Some Name"; 
     printIssues.DefaultPageSettings.Landscape = true; 
     printIssues.Print(); 
    } 
} 

private void previewButton_Click(object sender, EventArgs e) 
{ 
    PrintPreviewDialog printPreview = new PrintPreviewDialog(); 
    printPreview.Icon = Properties.Resources.favicon; 
    printPreview.Document = printIssues; 
    printIssues.DefaultPageSettings.Landscape = true; 
    ((Form)printPreview).WindowState = FormWindowState.Maximized; 

    printPreview.ShowDialog(); 
} 

其中I第一呈現預覽,一旦我點擊打印按鈕這個文檔被打印在默認打印機而不呈現所述設置窗口的第二個版本。我嘗試了一些東西,並在一段時間內安靜地尋找,但找不到任何幫助我的東西。

我感謝您的幫助。

回答

0

嗯,我發現你的問題的解決方法,我認爲。在一般的打印按鈕直接發送文件到打印機,但你可以代管控制在這個問題回答WorkAround may be?

希望這有助於。

好運

0

這恐怕是PrintPreviewDialog上的一個已知的限制。 它需要知道打印機來繪製佈局,以便使用默認打印機。

我已經在過去同樣的問題,我相信它可以顯示出PrintPreviewDialog上之前PrintDialog類來解決。

private void previewButton_Click(object sender, EventArgs e) 
{ 
    PrintDialog printDialog = new PrintDialog(); 
    if (DialogResult.OK == printDialog.ShowDialog()) 
     { 
      PrintPreviewDialog printPreview = new PrintPreviewDialog(); 
      printPreview.Document = printIssues; 

      // this is were you take the printersettings from the printDialog 
      printPreview.Document.PrinterSettings = printDialog.PrinterSettings; 

      printIssues.DefaultPageSettings.Landscape = true; 
      printPreview.ShowDialog();   
     } 
} 

另一個解決方法是製作自己的PrintPreviewDialog。但它需要更多的編碼。

你能告訴我上面的代碼是否適合你?