2015-02-12 2 views
2

Я пытаюсь показать диалог печати перед печатью в приложении WPF. Я использую Microsoft пример код из этого linkПоставщик PrintTicket не удалось связать принтер. Ошибка Win32: имя принтера недопустимо

// Create the print dialog object and set options 
PrintDialog pDialog = new PrintDialog(); 
pDialog.PageRangeSelection = PageRangeSelection.AllPages; 
pDialog.UserPageRangeEnabled = true; 

// Display the dialog. This returns true if the user presses the Print button. 
Nullable<Boolean> print = pDialog.ShowDialog(); 

он падает на последнюю строку со следующим исключением:

PrintTicket provider failed to bind to printer. Win32 error: The printer name is invalid.

Я пытался искать решение, и два, что люди предполагают, устанавливаемые Printer Server, и переключиться на любую сборку ЦП, но ни один из них не работал в моем случае.

+0

Это происходит с каждым принтером, который вы пробовали? У меня были проблемы, характерные для принтера; так что это тоже нужно искать. – Kcvin

ответ

5

Я создал еще один пустой проект, только с кодом от Microsoft, и он отлично работал. Я начал сравнивать две настройки проекта, и они были идентичны. В конце концов оказалось, что следующий параметр вызывает проблему:

Debug-> Исключения ...- общеязыковой среды выполнения Исключения

Я забыл, что я имел его при устранении неполадок что-то еще. Как только я отключил его, моя программа больше не прерывает исключение и отображает диалог правильно.

+0

Для тех, кто прочитал это - есть некоторые исключения на низком уровне, которые возникают на системном уровне, которые вы можете видеть только тогда, когда вы ловите все исключения. Мое общее правило заключается в том, что если принтер печатает то, что вы ожидаете, тогда не волнуйтесь об исключениях, брошенных в нечто вроде mscorlib. Я лично видел исключения ThreadSafeHandle в своем приложении. – Kcvin

+0

Другими словами, ответ «Не паникуйте»? –