printdialog.showdialog(); 没有在64位的Windows 7中显示打印对话框

我有自定义控件与打印工具栏项。当打印控件对话框没有进入Windows 7与64位操作系统在其他系统操作系统工作正常。 仅在具有64位的Windows 7中出现问题。

我的问题printdialog没有进入64位的Windows 7操作系统。

我已检查并分析 – > PrintDialog.ShowDialog()返回immeaditely取消instaed显示该问题的对话框。

我通过搜索以下链接找到了问题的解决方案:

http://social.msdn.microsoft.com/Forums/en/netfx64bit/thread/8760fb6c-ae63-444e-9606-cd3295ce6b5d

http://msdn.microsoft.com/en-us/library/system.windows.forms.printdialog.useexdialog.aspx

通过将true设置为printdialog的UseExDialog属性,对话框出现并正常工作。但是这个对话框样式就像是Windows XP而不是windows7样式。所以这不是解决方案。

UseExDialog属性设置为true意味着工作正常。但打印对话框样式看起来像Windows XP打印不像Windows 7.我需要一些其他解决方案在Windows 7 os 64位显示打印对话框。

请为此问题提供完整的解决方案

谢谢

湿婆

每个微软的论坛 :

通过Mike Dos Zhang(MSFT CSG)

除非将UseEXDialog属性设置为true,否则PrintDialog类可能无法在AMD64(x64或任何CPU属于AMD64技术,包括intel x64cpu)微处理器上运行。

这是一个已知的问题。

并且.net framework4支持这个限制,所以如果你想在windows7样式对话框中使用这个类,那么你需要使用.net framework4,否则你需要使用xp样式对话框将UseEXDialog属性设置为true ,或使用x86目标平台。

在我的情况下,第二个已知的问题是它……我们从.NET 2.0升级到.NET 4.0,它开始工作而没有任何代码更改(打印)。

如果您不能或不喜欢设置UseEXDialog = true可以选择将Plattform设置为x86

缺点是显而易见的,但这样做应该会给你带来不需要像uzbones那样升级.NET Framework的优势 ,这也可能会产生问题。

我的.net框架v3.5,将解决方案升级到.net framework v4.5也遇到了同样的问题,而且效果很好。

将对话框对象属性AutoUpgradeEnabled设置为false更正了在Windows 7 SP1 64位中执行时的问题(解决方案是使用VS2008和.net 2.0编译的)。

防爆。

 SaveFileDialog dlg = new SaveFileDialog(); dlg.AutoUpgradeEnabled = false;