【问题标题】:How to present print settings from print preview?如何从打印预览中显示打印设置?
【发布时间】:2020-02-03 17:16:02
【问题描述】:

在我的 C# 项目中,我有 2 个打印功能。一种直接打印文档,另一种向用户显示预览并在用户选择时打印。

虽然这两种方法都有效,但直接打印版本会在打印文档之前显示打印设置窗口。

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

我首先显示预览的第二个版本,一旦我单击打印按钮,文档就会在默认打印机上打印,而不显示设置窗口。我尝试了一些东西并安静地搜索了一段时间,但找不到任何对我有帮助的东西。

感谢您的帮助。

【问题讨论】:

    标签: c# printing


    【解决方案1】:

    恐怕这是 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。但它需要更多的编码。

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

    【讨论】:

      猜你喜欢
      • 2013-10-19
      • 2021-11-27
      • 1970-01-01
      • 1970-01-01
      • 2020-03-07
      • 1970-01-01
      • 1970-01-01
      • 2017-01-20
      • 2020-12-11
      相关资源
      最近更新 更多