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

问题描述 投票:0回答:5

我有带有打印工具栏项的自定义控件。当打印控件时 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 操作系统中显示打印对话框的解决方案。

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

谢谢

湿婆

c# winforms 32bit-64bit printdialog
5个回答
20
投票

根据 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 并且它在没有任何代码更改(打印)的情况下再次开始工作。


4
投票

如果你不能或不喜欢设置

UseEXDialog = true
另一种方法是将您的
Plattform
设置为
x86

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


0
投票

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


0
投票

只需按照以下步骤:

1- 在 Visual Studio 2008 中打开您的旧解决方案(使用 Visual Studio 2005 创建), 2- 在打开您的解决方案时接受转换(从 2005 年到 2008 年), 3-勾选备份复选框并选择所需的备份位置, 4- 您的解决方案成功打开后,您的解决方案, 5-就是这样,完成了。现在运行你的项目,你会看到 will 显示没有任何问题......


-2
投票

将对话框对象属性

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

例如

SaveFileDialog dlg = new SaveFileDialog();    
dlg.AutoUpgradeEnabled = false;
© www.soinside.com 2019 - 2024. All rights reserved.