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

12

我正在开发的内部应用在 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个回答

30

printDialog.UseEXDialog设置为true可以解决此问题。

在.Net 3.5中,MSDN在文档中提到了这个潜在的问题,当记录UseEXDialog时:

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

(我的强调。)

.Net 4.Net 4.5的同一页不包括强调部分,所以也许在这些版本中已经修复了该问题。


2
谢谢,对于其他有兴趣的人,MSDN关于UseExDialog的文章有更多的评论 - http://msdn.microsoft.com/en-us/library/system.windows.forms.printdialog.useexdialog.aspx - Bryan
我的初步搜索没有找到任何有用的信息,然而现在我知道了解决方案,关于这个问题有很多阅读材料可供参考。http://www.google.co.uk/search?q=UseExDialog+cancelled - Bryan
感谢。微软这样隐藏功能,非常直观。 - Carra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接