首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在WPF中使用System.Drawing.Printing.PrintDocument

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

Stack Overflow用户
提问于 2009-11-02 01:31:19
回答 2查看 13.5K关注 0票数 5

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

WinForms方式:

代码语言:javascript
复制
// 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方式:

代码语言:javascript
复制
System.Windows.Controls.PrintDialog dialog = new System.Windows.Controls.PrintDialog();
if (dialog.ShowDialog() == true)
{
    // how to print old PrintDocument???
    dialog.PrintDocument(...);
}

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

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-12-19 03:50:08

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

票数 2
EN

Stack Overflow用户

发布于 2009-12-17 13:47:50

代码语言:javascript
复制
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();
} 
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1657737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档