×

VB.Net实现Winform打印机选择

Kalet Kalet 发表于2009-03-20 12:00:14 浏览317 评论0

抢沙发发表评论

Introduction

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.



Dimprtdoc AsNewPrintDocument
DimstrDefaultPrinter AsString= prtdoc.PrinterSettings.PrinterName



Since we know that the new instance of the PrintDocument refers to the printer setup as default, we access the PrinterName property of the PrinterSettings property of this new instance to obtain the name of the default printer.

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

Note that the list of printers is obtained through the InstalledPrinters property of the PrinterSettings object.

Complete Code Listing


ImportsSystem



ImportsSystem.Windows.Forms
Imports
System.Drawing.Printing
Public
Class Form1
Inherits
System.Windows.Forms.Form
Private
comboBox1 As System.Windows.Forms.ComboBox
Privatelabel1 As
System.Windows.Forms.LabelVB.Net实现Winform打印机选择
PublicSub New
()
comboBox1 = New
ComboBox()
label1 = New
Label()
label1.Location = New
System.Drawing.Point(20, 10)
label1.Name = "label1"
label1.Size = New
System.Drawing.Size(75, 20)
label1.Text = "Select Printer"
comboBox1.Location = New
System.Drawing.Point(100, 10)
comboBox1.Name = "comboBox1"
comboBox1.Size = New
System.Drawing.Size(150, 20)
AutoScaleBaseSize = New
System.Drawing.Size(5, 13)
ClientSize = New
System.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
SharedSub
Main()
Application.Run(
New Form1())
End
Sub 'Main
PrivateSub Form1_Load(sender As Object, e As System.EventArgs)
Dim
prtdoc As New PrintDocument()
Dim
strDefaultPrinter As String = prtdoc.PrinterSettings.PrinterName
Dim
strPrinter As [String]
ForEach strPrinter In
PrinterSettings.InstalledPrinters
comboBox1.Items.Add(strPrinter)
If
strPrinter = strDefaultPrinter Then
comboBox1.SelectedIndex = comboBox1.Items.IndexOf(strPrinter)
End
If
Next
strPrinter
End
Sub 'Form1_Load
EndClass 'Form1

Code Listing: defprinter.vb

Program in Action:



Figure: Sample application in action. Note that the default printer is selected by default.

You can further extend this sample to create a user control, which will provide the printer selection as a property and re-use the control in multiple Windows forms.

An application of this sample would be to provide a selection for the printer to be used for printing form within the application. We learnt the usage of some of the Framework classes to obtain printer information.

NOTE:
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.



群贤毕至

访客