【问题标题】:Using System.Drawing.Printing.PrintDocument in WPF在 WPF 中使用 System.Drawing.Printing.PrintDocument
【发布时间】:2009-11-01 17:31:19
【问题描述】:

我有一个 WPF 应用程序,我使用外部库来生成文档。此库将文档返回为 System.Drawing.Printing.PrintDocument。如何在 WPF 中打印此文档?我可以直接使用 Print() 方法,但我需要允许用户选择打印机和设置。如果我使用 WPF PrintDocument 对话框,我无法像在 WinForms dialog.Document 中那样将我的文档设置为它。有没有办法将旧的 PrintDocument 转换为某种 WPF 友好的形式?

WinForms方式:

// get document for printing
PrintDocument document = exporter.GetPrintDocument();
System.Windows.Forms.PrintDialog dialog = new System.Windows.Forms.PrintDialog();
dialog.Document = document;
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
    document.Print();
}

WPF方式:

System.Windows.Controls.PrintDialog dialog = new System.Windows.Controls.PrintDialog();
if (dialog.ShowDialog() == true)
{
    // how to print old PrintDocument???
    dialog.PrintDocument(...);
}

我也尝试在 WPF 中打开 WinForms 对话框,但这是不可能的。只是没有显示对话框。

感谢您的帮助。

【问题讨论】:

    标签: c# wpf printing


    【解决方案1】:

    我找到了答案。您必须将UseDialogEx 对话框属性设置为true

    【讨论】:

    • 这个人指的是使用 WinForms PrintDialog 并设置 UseDialogEx 以便它可以在 WPF 中工作。
    【解决方案2】:
    MessageBox.Show(printDialog1.PrinterSettings.PrinterName);
    printDialog1.PrinterSettings.PrintFileName = "A.txt"; 
    MessageBox.Show(printDialog1.PrinterSettings.PrintFileName);   
    
    printDialog1.ShowDialog();
    printDocument1.DocumentName = "A.txt";
    if (printDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    {
        printDocument1.Print();
    } 
    

    【讨论】:

      猜你喜欢
      • 2011-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-17
      • 2011-08-12
      • 2013-08-08
      • 2016-07-14
      • 2017-06-10
      相关资源
      最近更新 更多