Comment puis-je spécifier une imprimante autre que l'imprimante par défaut?

Je voudrais être en mesure de spécifier deux imprimantes différentes pour les deux types de tâches. Je suis l'aide de la classe suivante pour gérer l'impression, mais peu importe ce que je fais, l'imprimante par défaut est toujours celui qui est imprimé.

Public Class Receipt : Inherits Printing.PrintDocument
Private _font As Font = New Font("Courier", 8)
Private _text As String = ""
Public Property Text() As String
Get
Return _text
End Get
Set(ByVal Value As String)
_text = Value.Trim
End Set
End Property
Public Sub New(ByVal str As String, ByVal settings As Printing.PrinterSettings)
MyBase.New()
_text = str
Me.PrinterSettings = settings
End Sub
Protected Overrides Sub OnPrintPage(ByVal e As Printing.PrintPageEventArgs)
Dim printHeight As Integer
Dim printWidth As Integer
Dim leftMargin As Integer
Dim rightMargin As Integer
With Me.DefaultPageSettings
.PaperSize = New System.Drawing.Printing.PaperSize("Custom", 300, 1200)
.Margins.Left = 25
.Margins.Right = 25
printHeight = .PaperSize.Height - .Margins.Top - .Margins.Bottom
printWidth = .PaperSize.Width - .Margins.Left - .Margins.Right
leftMargin = .Margins.Left
rightMargin = .Margins.Top
End With
Dim printArea As New RectangleF(leftMargin, rightMargin, printWidth, printHeight)
Dim format As New StringFormat(StringFormatFlags.LineLimit)
Try
e.Graphics.DrawString(_text, _font, Brushes.Black, printArea, format)
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
End Class

Si je l'inspection de mon PrinterSettings attribut immédiatement avant l'appel à Cordon de serrage, le PrinterName attribut est toujours correctement fixé à l'imprimante, je précise, mais c'est toujours la valeur par défaut de l'imprimante que des coups de pied dans le travail. Je suis sûr que je suis absent quelque chose d'évident, mais serait certainement reconnaissant si quelqu'un pouvait point de ce qu'il est. 🙂

Grâce

InformationsquelleAutor Blumer | 2009-07-24