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

Bry*_*yan 12 .net printing printdialog windows-7 winforms

我正在开发的内部应用程序在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;
Run Code Online (Sandbox Code Playgroud)

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

Ste*_*tze 30

设置printDialog.UseEXDialogtrue解决此错误.

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

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

(我的重点.)

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

  • 谢谢,对于其他任何感兴趣的人,有关UseExDialog的MSDN文章有更多关于此的评论 - http://msdn.microsoft.com/en-us/library/system.windows.forms.printdialog.useexdialog.aspx (2认同)