VB.NET 创建打印机选择列表

作者:Dipal Choksi 来源:vbdotnetheaven.com,粗糙翻译:seal203

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.

这个例子中,我们会创建一个包含combo控件来显示打印机列表,可以用来选择不同的打印机作为默认选项,这个列子的简单代码,并不是完善的打印程序,你可以用在完整的打印程序中,将本例代码作为“选择打印机选项”使用。


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. 

我们使用打印机设置来建立combo-列表框.用来查找默认打印机,我们使用PrintDocument

The InstalledPrinters property of the PrinterSettings class returns the names of all the printers installed on the computer.

用PrinterSettings类返回电脑中使用已安装的打印机

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.

一个PrintDocument类实例拥有默认打印的打印设置属性,我们可以从PrinterSettings对象中检索PrinterName默认打印机名字属性


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.

新建一vb.net窗体应用程序,在窗口中添加一个labelcombo box控件


We will populate the combo box in the Load event of the form.

我们在窗口Load事件中添加一个combo box


First we will retrieve the name of the default printer.

首先我们索检默认打印机名


Dim prtdoc As New PrintDocument
Dim strDefaultPrinter As String = 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.

PrintDocument实例刚创建时并不能访问打印机默认设置,我们需要从PrinterSettings属性中获得默认打印机名


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.

现在我们枚举电脑打印机名,添加到combox列表框,默认打印机将设为列表框的预设选项


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.

注意:打印机列表从PrinterSettings对象的InstallPrinters属性中获得


Complete Code Listing
完整代码:

Imports System
Imports System.Windows.Forms
Imports
 System.Drawing.Printing
Public
 Class Form1
Inherits
 System.Windows.Forms.Form
Private
 comboBox1 As System.Windows.Forms.ComboBox
Private label1 As
 System.Windows.Forms.Label
Public Sub 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)
End Sub 
'New
Shared Sub Main()
Application.Run(
New Form1())
End Sub 'Main
Private Sub 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]
For Each 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
End Class 
'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.
你能进一步扩展这个简单代码创建一个用户控件,为windows窗口提供打印选项和重用控件
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:
注意:
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.

本文为教学目的,文章实乃原创,虽无特别,如有雷同,纯属巧合


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值