2016-10-26 112 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。但它需要更多的编码。

你能告诉我上面的代码是否适合你?