PrintDialog.ShowDialog(this) 在 Windows 7 上立即返回 DialogResult.Cancel

Posted

技术标签:

【中文标题】PrintDialog.ShowDialog(this) 在 Windows 7 上立即返回 DialogResult.Cancel【英文标题】:PrintDialog.ShowDialog(this) immediately returns DialogResult.Cancel on Windows 7 【发布时间】:2010-12-17 00:17:28 【问题描述】:

我正在开发的内部应用程序在 Windows 7(64 位)PC 上表现异常。

如果我创建一个 PrintDialog 的实例,并调用它的 ShowDialog() 方法,该方法会立即返回 DialogResult.Cancel 而不显示打印机对话框表单。

Windows 7 PC 确实安装了打印机(带有工作的默认打印机)。

PrintDialog printDialog = new PrintDialog();

printDialog.PrinterSettings.Copies = 2;
printDialog.AllowCurrentPage = false;
printDialog.AllowPrintToFile = false;
printDialog.AllowSelection = false;
printDialog.AllowSomePages = false;
DialogResult dialogResult = printDialog.ShowDialog(this);

if (dialogResult == DialogResult.Cancel)
    return;

任何线索为什么会发生这种情况?

【问题讨论】:

【参考方案1】:

printDialog.UseEXDialog 设置为true 以解决此错误。

在 .Net 3.5 中,MSDN mentions this potential problem 记录 UseEXDialog 时:

当此属性设置为 true 时,ShowHelpShowNetwork 将被忽略,因为这些属性在 Windows 2000 和更高版本的 Windows 中已过时。 另外,PrintDialog 类可能无法在 AMD64 微处理器上运行,除非您将 UseEXDialog 属性设置为 true

(我的重点。)

.Net 4 和 .Net 4.5 的同一页面不包含强调位,因此可能在这些版本中已修复。

【讨论】:

谢谢,对于其他感兴趣的人,UseExDialog 的 MSDN 文章有更多关于此的 cmets - msdn.microsoft.com/en-us/library/… 我最初的谷歌搜索没有发现任何有用的东西,但是现在我知道了解决方案,有很多关于这个问题的阅读材料google.co.uk/search?q=UseExDialog+cancelled 谢谢。微软非常直观地隐藏了类似名称的功能。

以上是关于PrintDialog.ShowDialog(this) 在 Windows 7 上立即返回 DialogResult.Cancel的主要内容,如果未能解决你的问题,请参考以下文章

在 WPF 中打印集合

直接打印则需要调用PrintDocumnt.Print()方可打印,否按在对话框中点打印但不会有反应

C#打印图片设置报错 当应用程序不是以 UserInteractive 模式运行时显示模式对话框或窗体是无效操作。

th:field,th:value

关于thymeleaf th:replace th:include th:insert 的区别

Thymeleaf模板引擎语法