11

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

我的问题 printdialog 没有出现在 64 位的 Windows 7 操作系统中。

我已经检查并 anlyaed --> 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 样式。所以这不是 excat 解决方案。

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

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

谢谢

湿婆

4

4 回答 4

20

根据微软的论坛

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

于 2012-05-02T12:58:37.173 回答
4

如果您不能或不喜欢设置UseEXDialog = true 替代方案,请将您的设置Plattformx86

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

于 2014-08-22T10:52:51.667 回答
0

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

于 2017-05-01T05:43:10.153 回答
-2

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

前任。

SaveFileDialog dlg = new SaveFileDialog();    
dlg.AutoUpgradeEnabled = false;
于 2013-12-12T01:46:28.537 回答