Introduction Dimprtdoc AsNewPrintDocument
In this example we will create a sample Windows form containing a combo box, which will list the printers, installed on the machine on which the program runs. The default printer for the machine is set as the default selection in the combo box. This sample code can be used as a part of other applications in areas where it is required to detect the default printer or select a printer from the list of installed printers.VB.Net实现Winform打印机选择
Key Classes
We will use the PrinterSettings class to populate out combo-box. To find the default printer on the machine, we will use the PrintDocument class.
The InstalledPrinters property of the PrinterSettings class returns the names of all the printers installed on the computer.
A new instance of the PrintDocument class has the PrinterSettings property which points to the printer set up as the default printer. We can retrieve the name of the default printer using the PrinterName property of that PrinterSettings object.
Details
We will start by creating our Windows form and adding a label and a combo box control to it. If you are using Visual Studio.Net, you can create a new Visual VB Windows Application and use the default form created in the application. Drag and drop a label and a combobox on the form from the Toolbox.
We will populate the combo box in the Load event of the form.
First we will retrieve the name of the default printer.
DimstrDefaultPrinter AsString= prtdoc.PrinterSettings.PrinterName
Now we will enumerate through a list of all printers installed on this computer and add their names in the combo box. If the name of the printer matches the name of the default printer we extracted in our previous step, we set that item as the default selection in the combo box.
Dim strPrinter As String
For Each strPrinter In PrinterSettings.InstalledPrinters
comboBox1.Items.Add(strPrinter)
If strPrinter = strDefaultPrinter Then
comboBox1.SelectedIndex = comboBox1.Items.IndexOf(strPrinter)
End If
Next strPrinter
Complete Code Listing
ImportsSystem
ImportsSystem.Windows.Forms
ImportsSystem.Drawing.Printing
PublicClass Form1
InheritsSystem.Windows.Forms.Form
PrivatecomboBox1 As System.Windows.Forms.ComboBox
Privatelabel1 AsSystem.Windows.Forms.LabelVB.Net实现Winform打印机选择
PublicSub New()
comboBox1 = NewComboBox()
label1 = NewLabel()
label1.Location = NewSystem.Drawing.Point(20, 10)
label1.Name = "label1"
label1.Size = NewSystem.Drawing.Size(75, 20)
label1.Text = "Select Printer"
comboBox1.Location = NewSystem.Drawing.Point(100, 10)
comboBox1.Name = "comboBox1"
comboBox1.Size = NewSystem.Drawing.Size(150, 20)
AutoScaleBaseSize = NewSystem.Drawing.Size(5, 13)
ClientSize = NewSystem.Drawing.Size(300, 100)
Text = "Printers Sample"
Controls.AddRange(New System.Windows.Forms.Control() {Me.label1, Me.comboBox1})
Me.Load += New System.EventHandler(Me.Form1_Load)
EndSub 'New
SharedSubMain()
Application.Run(New Form1())
EndSub 'Main
PrivateSub Form1_Load(sender As Object, e As System.EventArgs)
Dimprtdoc As New PrintDocument()
DimstrDefaultPrinter As String = prtdoc.PrinterSettings.PrinterName
DimstrPrinter As [String]
ForEach strPrinter InPrinterSettings.InstalledPrinters
comboBox1.Items.Add(strPrinter)
IfstrPrinter = strDefaultPrinter Then
comboBox1.SelectedIndex = comboBox1.Items.IndexOf(strPrinter)
EndIf
NextstrPrinter
EndSub 'Form1_Load
EndClass 'Form1
Figure: Sample application in action. Note that the default printer is selected by default.
VB.Net实现Winform打印机选择
This article is for purely educational purposes. This article is entirely original, unless specified. Any resemblance to other material is an un-intentional coincidence and should not be misconstrued as malicious, slanderous, or any anything else hereof.