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 не включает выделенный бит, поэтому, возможно, она исправлена ​​в этих версиях.

Другие вопросы по тегам