我有带有打印工具栏项的自定义控件。当打印控件时 Windows 7 中没有对话框,其他系统操作系统中的 64 位操作系统正常工作 美好的。仅在 64 位 Windows 7 中出现问题。
我的问题 printdialog 没有出现在 64 位的 Windows 7 操作系统中。
我已经检查并分析了 -->PrintDialog.ShowDialog() 立即返回 取消显示对话框就是问题所在。
我通过搜索以下链接找到了问题的解决方案:
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
通过将 printdialog 的 UseExDialog 属性设置为 true,对话框出现并且 工作正常。但是这个对话框风格就像 windows XP 而不是 windows7 style.so 这不是 excat 解决方案。
UseExDialog 属性设置为 true 意味着工作正常。但是打印对话框 风格看起来像 Windows XP 打印不像 Windows 7。我需要一些其他的 在 64 位 Windows 7 操作系统中显示打印对话框的解决方案。
请为这个问题提供完整的解决方案
谢谢
湿婆
根据 Microsoft 的论坛:
来自 Mike Dos Zhang (MSFT CSG)
PrintDialog 类可能无法在 AMD64(x64 或任何 CPU 属于 AMD64 技术,包括英特尔 x64cpu)微处理器上运行,除非您将 UseEXDialog 属性设置为 true。
这是一个已知问题。
并且.net framework4已经支持这个限制,所以如果你想在windows7风格的对话框中使用这个类,那么你需要使用.net framework4,否则你需要使用xp风格的对话框并将UseEXDialog属性设置为true,或使用 x86 目标平台。
在我的例子中,第二个已知问题是......我们从 .NET 2.0 升级到 .NET 4.0 并且它在没有任何代码更改(打印)的情况下再次开始工作。
如果你不能或不喜欢设置
UseEXDialog = true
另一种方法是将您的Plattform
设置为x86
缺点是显而易见的,但这样做应该给您带来优势不需要像uzbones那样升级您的.NET Framework,这也可能会产生问题。
我的 .net framework v3.5 遇到了同样的问题,将解决方案升级到 .net framework v4.5 并且运行良好。
只需按照以下步骤:
1- 在 Visual Studio 2008 中打开您的旧解决方案(使用 Visual Studio 2005 创建), 2- 在打开您的解决方案时接受转换(从 2005 年到 2008 年), 3-勾选备份复选框并选择所需的备份位置, 4- 您的解决方案成功打开后,您的解决方案, 5-就是这样,完成了。现在运行你的项目,你会看到 will 显示没有任何问题......
将对话框对象属性
AutoUpgradeEnabled
设置为 false 更正了在 Windows 7 SP1 64 位中执行时的问题(解决方案是使用 VS2008 和 .net 2.0 编译的)。
例如
SaveFileDialog dlg = new SaveFileDialog();
dlg.AutoUpgradeEnabled = false;