PrintDialog.ShowDialog(это) немедленно возвращает DialogResult.Cancel в Windows 7
Встроенное приложение, которое я разрабатываю, ведет себя странно на компьютере под управлением Windows 7 (64-разрядный).
Если я создаю экземпляр PrintDialog и вызывается метод ShowDialog(), метод немедленно возвращает DialogResult.Cancel, не показывая диалоговую форму принтера.
На компьютере Windows 7 установлены принтеры (с рабочим принтером по умолчанию).
PrintDialog printDialog = new PrintDialog();
printDialog.PrinterSettings.Copies = 2;
printDialog.AllowCurrentPage = false;
printDialog.AllowPrintToFile = false;
printDialog.AllowSelection = false;
printDialog.AllowSomePages = false;
DialogResult dialogResult = printDialog.ShowDialog(this);
if (dialogResult == DialogResult.Cancel)
return;
Любые подсказки, почему это происходит?
Ответы
Ответ 1
Установите printDialog.UseEXDialog
в true
, чтобы обойти эту ошибку.
В .Net 3.5, MSDN упоминает эту потенциальную проблему при документировании UseEXDialog
:
Если для этого свойства установлено значение true
, ShowHelp
и ShowNetwork
будут проигнорированы, поскольку эти свойства стали устаревшими для Windows 2000 и более поздних версий Windows. Кроме того, класс PrintDialog
может не работать на микропроцессорах AMD64, если вы не установите для свойства UseEXDialog
значение true
.
(Мой акцент.)
Те же страницы для .NET 4 и .NET 4.5 не включать выделенный бит, поэтому, возможно, он исправлен в этих версиях.