Перенос настроек PrintDialog и PrinterSettings из winforms в wpf - PullRequest
0 голосов
/ 24 марта 2020

У меня есть следующий код, который очень хорошо работает в winforms и C#:

printDialog = new PrintDialog();
if (DialogResult.OK == printDialog.ShowDialog())
{
  try
  {
    PrintDocument pd = new PrintDocument();
    PrinterSettings ps = new PrinterSettings();
    pd.PrintPage += new PrintPageEventHandler(PrintImage);
    pd.PrinterSettings = printDialog.PrinterSettings;
    pd.Print();
  }
  catch
  {
  
  }
}

Теперь в wpf указано, что в строке есть ошибка:

pd.PrinterSettings = printDialog.PrinterSettings;

Поэтому, чтобы проверить, работает ли остальная часть кода, я прокомментировал его, и он работает очень хорошо, но, очевидно, он всегда печатает на принтере, который P C настроил по умолчанию.

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

printDialog.PrintQueue = new PrintQueue(new PrintServer(), "The exact name of my printer");

Но при выполнении этого действия возникает ошибка:

Код серьезности Описание Файл строки состояния проекта удален Ошибка CS0012 Тип 'PrintQueue' определен в сборка, на которую нет ссылок. Вы должны добавить ссылку на сборку 'System.Printing, версия = 4.0.0.0, культура = нейтральная,

Любые комментарии или предложения приветствуются.

1 Ответ

0 голосов
/ 25 марта 2020

Решением для wpf является добавление ссылки на System.Printing.dll (спасибо @Sinatr) и код такой:

PrintDocument pd = new PrintDocument();
PrinterSettings ps = new PrinterSettings();
pd.PrintPage += new PrintPageEventHandler(PrintImage);

pd.PrinterSettings.PrinterName = printDialog.PrintQueue.Name; 

pd.Print();
...