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

时间:2011-06-17 12:39:28

标签: c# winforms 32bit-64bit printdialog

我有打印工具栏项的自定义控件。当打印控件时 在其他系统操作系统中使用64位操作系统的Windows 7中没有对话框 精细。仅在具有64位的Windows 7中出现问题。

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

我检查过并且分析了 - > PrintDialog.ShowDialog()无效地返回 取消显示问题对话框的insta。

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

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 style.so 这不是解决方案。

UseExDialog属性设置为true表示正常工作。但打印对话框 风格看起来像Windows XP打印不像Windows 7.我需要一些其他 用于在64位的Windows 7 os中显示打印对话框的解决方案。

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

由于

希瓦

4 个答案:

答案 0 :(得分:19)

Microsoft's Forums

  

通过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,它开始工作而没有任何代码更改(打印)。

答案 1 :(得分:4)

如果您不能或不想设置UseEXDialog = true 另一种方法是将Plattform设置为x86

  

缺点是显而易见的,但这样做可以为您提供优势,而不需要像uzbones那样升级您的.NET Framework,这也可以制造问题。

答案 2 :(得分:0)

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

答案 3 :(得分:-2)

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

实施例

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