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
时,ShowHelp
和ShowNetwork
将被忽略,因为这些属性在 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的主要内容,如果未能解决你的问题,请参考以下文章
直接打印则需要调用PrintDocumnt.Print()方可打印,否按在对话框中点打印但不会有反应
C#打印图片设置报错 当应用程序不是以 UserInteractive 模式运行时显示模式对话框或窗体是无效操作。