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