VB .Net PrintDialog возвращает неверное имя принтера - PullRequest
0 голосов
/ 03 февраля 2019

Я пытаюсь получить имя принтера, выбранное пользователем из PrintDialog, однако PrintDialog1.PrinterSettings.PrinterName.Equals возвращает имя принтера по умолчанию Windows, а не принтер, выбранный в диалоговом окне, какие-либо подсказки?

  Dim userResp As DialogResult = PrintDialog1.ShowDialog()
  PrintDialog1.Document = PreparePrintDocument()
  If userResp = DialogResult.OK Then
      If PrintDialog1.PrinterSettings.PrinterName.Equals("Microsoft Print to PDF") Then  
          do something
      Else
          do something else
      End If

В этом примере после нажатия «Microsoft Print to PDF» в диалоговом окне «Отладка» сообщает, что значение «Canon xxx» является принтером по умолчанию для Windows.

Есть ли другой способ получить принтервыбран в диалоге?Документы утверждают, что PrinterSettings.PrinterName может получить или установить значение?

Ответы [ 2 ]

0 голосов
/ 03 февраля 2019

Простая ошибка.Добавление этой строки до того, как ShowDialog () исправит ее!

  PrintDialog1.PrinterSettings = print_document.PrinterSettings
0 голосов
/ 03 февраля 2019

Мы просто сравниваем строки, так что оператор =.

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    If PrintDialog1.ShowDialog() = DialogResult.OK Then
        'Just to check what they chose.
        Debug.Print(PrintDialog1.PrinterSettings.PrinterName)
        If PrintDialog1.PrinterSettings.PrinterName = "Microsoft Print to PDF" Then
            MessageBox.Show("Your chose PDf.")
        End If
    End If
End Sub

На самом деле ваш код также работает для меня.

If PrintDialog1.PrinterSettings.PrinterName.Equals("Microsoft Print to PDF") Then
...