在 WPF 中使用 System.Drawing.Printing.PrintDocument

问题描述 投票:0回答:2

我有一个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
2个回答
2
投票

我找到了答案。您必须将

UseDialogEx
对话框属性设置为
true


-1
投票
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();
} 
© www.soinside.com 2019 - 2024. All rights reserved.