printdialog.showdialog ();не отображается диалоговое окно печати в Windows 7 с 64 бит - PullRequest
9 голосов
/ 17 июня 2011

У меня есть пользовательский элемент управления с панелью инструментов печати. ​​При печати элемента управления диалоговое окно не появляется в Windows 7 с 64-разрядной ОС в других системах работает нормально.проблема только в Windows 7 с 64-битной.

моя проблема printdialog не приходит в Windows 7 OS с 64-битной.

я проверил и 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

, установив true в свойстве UseExDialog printdialog, диалоговое окно появляется и работает нормально. Но этот стиль диалога похож на windows XP, а не на стиль windows7. Так что это не решение проблемы.

Свойство UseExDialog, установленное в true, означает работухорошо, но стиль диалога печати выглядит как Windows XP, печать не похожа на Windows 7. Мне нужно другое решение для отображения диалога печати в Windows 7 OS с 64-битным.

, пожалуйста, предоставьте полное решение для этой проблемы

Спасибо

Шива

Ответы [ 4 ]

19 голосов
/ 02 мая 2012

За Форумы Microsoft :

через Майка Дос Чжана (MSFT CSG)

Класс PrintDialog может не работать на AMD64 (x64 илиЛюбой ЦП относится к техническим микропроцессорам AMD64, включая Intel x64cpu), если для свойства UseEXDialog не установлено значение true.

Это известная проблема.

И это ограничение поддерживается в .net framework4, поэтому, если вы хотите использовать этот класс с диалоговым окном в стиле Windows7, вам нужно будет использовать .net framework4, в противном случае вам нужно будет использовать диалоговое окно в стиле xp с установленным для свойства UseEXDialog значением true или с помощью целевой платформы x86.

В моем случае второй известной проблемой было то, что ... мы обновили .NET 2.0 до .NET 4.0, и он снова начал работать без каких-либо изменений кода (до печати).

4 голосов
/ 22 августа 2014

Если вы не можете или не хотите устанавливать UseEXDialog = true альтернативой будет установка Plattform на x86

Недостаток очевиден, но это должно дать вам преимущество в том, что вам не нужно обновлять ваш .NET Framework, как это сделал uzbones , что также может создавать проблемы.

0 голосов
/ 01 мая 2017

У меня возникла та же проблема для моего .net Framework v3.5, обновленного решения до .net Framework v4.5, и она работала хорошо.

0 голосов
/ 12 декабря 2013

Установка свойства объекта диалога AutoUpgradeEnabled в значение false исправила проблему при выполнении в Windows 7 с пакетом обновления 1 (SP1) 64-разрядной (решение было скомпилировано с использованием VS2008 и .net 2.0).

Пример.

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