繁体   English   中英

如何从打印预览中显示打印设置?

[英]How to present print settings from print preview?

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

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

我很感激你的帮助。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM