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