VB .Net PrintDialog возвращает неверное имя принтера

Я пытаюсь получить имя принтера, выбранное пользователем из 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 ответа

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

  PrintDialog1.PrinterSettings = print_document.PrinterSettings

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

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
Другие вопросы по тегам