Если я правильно понимаю, вы бы хотели сбросить имя принтера до принтера по умолчанию (1), не воссоздавая PrintDocument и, (2 ) после того, как вы, возможно, уже установили его на что-то другое или, (3), когда принтер по умолчанию мог измениться со времени первого создания PrintDocument (поэтому нельзя полагаться на простое кэширование значений по умолчанию, предоставленных целевым экземпляром после первоначального построения) .
В этом случае при поиске « C # получить имя принтера по умолчанию » появляется следующая отличная статья о stackoverflow: Какой лучший способ получить принтер по умолчанию в .NET
Опираясь на образец, приведенный в ответе с наибольшим количеством голосов, и учитывая, что у вас уже есть уже существующий PrintDocument
с некоторыми настройками, которые вы не хотите восстанавливать; Вы можете создать новый экземпляр класса PrinterSettings
, исключительно для копирования имени принтера по умолчанию.
// Create a new instance of the PrinterSettings class, which
// we will only use to fetch the default printer name
System.Drawing.Printing.PrinterSettings newSettings = new System.Drawing.Printing.PrinterSettings();
// Copy the default printer name from our newSettings instance into our
// pre-existing PrintDocument instance without recreating the
// PrintDocument or the PrintDocument's PrinterSettings classes.
existingPrintDocumentInstance.PrinterSettings.PrinterName = newSettings.PrinterName;
Вы можете просмотреть связанный пост для альтернативных методов, таких как WMI, но я думаю, что это самое простое и чистое решение для вас.