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

时间:2009-11-16 10:27:36

标签: .net winforms printing windows-7 printdialog

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

答案 0 :(得分:30)

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

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

  

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

(我的重点。)

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