[C#学习]枚举系统安装的所有打印机

2016-02-19 16:56 22 1 收藏

有一种朋友不在生活里,却在生命力;有一种陪伴不在身边,却在心间。图老师即在大家的生活中又在身边。这么贴心的服务你感受到了吗?话不多说下面就和大家分享[C#学习]枚举系统安装的所有打印机吧。

【 tulaoshi.com - 编程语言 】

  最近在论坛中不少网友问"如何把Windows安装的所有打印机列出来",在下面的程序中我们将把系统中所安装的打印机用列表框列出来,同时为默认打印机设置缺省值。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  在下面的程序中我们用到了两个主要的类,把所有的打印机列表出来用到了PrinterSettings 类,获取系统默认打印机用到了PrintDocument 类,下面我们就动手实践一下吧。

  先新建一个windows form的工程,然后加入一个lable和一个comBox,就行啦,关键在下面啦,我们如何获得默认打印机,就得用下面的语句。

  

PrintDocument prtdoc = new PrintDocument();string strDefaultPrinter = prtdoc.PrinterSettings.PrinterName;//获取默认的打印机名

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  有了默认的打印机,我们再把所有的打印机列出来。

  PrinterSettings类有一个InstalledPrinters的属性,不知是做什么的吧,查MSDN如下解释:

  PrinterSettings.InstalledPrinters 获取安装在计算机上所有打印机的名称。

  在C#中如下定义:

  

[C#][Serializable][ComVisible(false)]public static PrinterSettings.StringCollection InstalledPrinters{get;}

  属性值

  PrinterSettings.StringCollection,它表示安装在计算机上所有打印机的名称。

  异常

  

异常类型条件 Win32Exception 未能枚举可用的打印机

  备注

  可以使用已安装的打印机名称的集合向用户提供要打印到的打印机选择。

  下面的示例用已安装的打印机填充 comboInstalledPrinters 组合框,并且还在选择更改时使用 PrinterName 属性设置用于打印的打印机。PopulateInstalledPrintersCombo 例程在窗体初始化时被调用。该示例假定存在名为 printDoc 的 PrintDocument 变量,并且存在特定的组合框。

  

[C#]//下面括号内的自己翻译添加进去的private void PopulateInstalledPrintersCombo(){// Add list of installed printers found to the combo box.(将系统中所有的打机加入列表框)// The pkInstalledPrinters string will be used to provide the display string.(列表框中显示的字串由pkInstalledPrinters提供)foreach(String pkInstalledPrinters inPrinterSettings.InstalledPrinters){comboInstalledPrinters.Items.Add(pkInstalledPrinters);}}private void comboInstalledPrinters_SelectionChanged(object sender, System.EventArgs e){// Set the printer to a printer in the combo box when the selection changes.(当列表框改变时设置选择的打印机)if (comboInstalledPrinters.SelectedIndex != -1){// The combo box's Text property returns the selected item's text, which is the printer name.(将选择的打印机名在列表框中显示)printDoc.PrinterSettings.PrinterName= comboInstalledPrinters.Text;}}

  看了MSDN的说明,懂多了吧,下面是我写练习完整代码:

  

//程序说明:将系统中的所有打印机在列表框中列出//程序变量: PrintDocument prtdoc、string strDefaultPrinter//编写人:蚕蛹(sillnet@163.net)//日期:2003-03-20using System;using System.Drawing;using System.Drawing.Printing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Data;namespace PrinterList{ /// /// Form1 的摘要说明。 /// public class Form1 : System.Windows.Forms.Form {  private System.Windows.Forms.Label label1;  private System.Windows.Forms.ComboBox printerList;  ///  /// 必需的设计器变量。  ///  private System.ComponentModel.Container components = null;  public Form1()  {   //   // Windows 窗体设计器支持所必需的   //   InitializeComponent();   PrintDocument prtdoc = new PrintDocument();   string strDefaultPrinter = prtdoc.PrinterSettings.PrinterName;//获取默认的打印机名   foreach(String strPrinter in PrinterSettings.InstalledPrinters)   //在列表框中列出所有的打印机,   {     printerList.Items.Add(strPrinter);    if (strPrinter == strDefaultPrinter)//把默认打印机设为缺省值    {     printerList.SelectedIndex = printerList.Items.IndexOf(strPrinter);    }   }   //   // TODO: 在 InitializeComponent 调用后添加任何构造函数代码   //  }  ///  /// 清理所有正在使用的资源。  ///  protected override void Dispose( bool disposing )  {   if( disposing )   {    if (components != null)    {     components.Dispose();    }   }   base.Dispose( disposing );  }  #region Windows Form Designer generated code  ///  /// 设计器支持所需的方法 - 不要使用代码编辑器修改  /// 此方法的内容。  ///  private void InitializeComponent()  {   this.label1 = new System.Windows.Forms.Label();   this.printerList = new System.Windows.Forms.ComboBox();   this.SuspendLayout();  //  // label1   //   this.label1.Location = new System.Drawing.Point(8, 24);   this.label1.Name = "label1";   this.label1.Size = new System.Drawing.Size(72, 16);   this.label1.TabIndex = 0;   this.label1.Text = "选择打印机:";   //   // printerList   //   this.printerList.Location = new System.Drawing.Point(88, 22);   this.printerList.Name = "printerList";   this.printerList.Size = new System.Drawing.Size(192, 21);   this.printerList.TabIndex = 1;   this.printerList.Text = "当前系统未装打印机";   //   // Form1   //   this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);   this.ClientSize = new System.Drawing.Size(288, 61);   this.Controls.AddRange(new System.Windows.Forms.Control[] {      this.printerList,      this.label1});   this.Name = "Form1";   this.Text = "打印机列表";   this.ResumeLayout(false);  }  #endregion  ///  /// 应用程序的主入口点。  ///  [STAThread]  static void Main()  {   Application.Run(new Form1());  } }}

  以上代码在windows xp + vc.net 下测试通过,编译后在Windows98上测试通过

来源:https://www.tulaoshi.com/n/20160219/1613617.html

延伸阅读
标签: 电脑入门
有些打印机拥有双面打印的功能,能充分的利用纸张,十分的实用,虽然价格比较高。大部分情况下拥有双面打印功能的打印机默认不会打印双面,需要进行一定的设置,个别的设置偏麻烦。 点击屏幕左下角的开始菜单,选择打印机和传真项: 在打开的打印机和传真窗口中,右击需要设置的、拥有双面打印功能的打印机: 在弹出的对话框中选择Dev...
标签: 电脑入门
公司的办公离不开打印,传真,复印和扫描等,这些机器要是一样样的配置,又占空间又麻烦,公司的首选肯定是用集这些功能于一身的一体机. 一体机也许一开始销售公司会帮你安装好,但是一旦出现个人的机子出现了问题,重装系统后,就要面临着重装网络打印机的困扰了现在简单的做一个教程,帮助大家自己动手安装好网络打印机. 在安装的时候要几...
标签: 打印机 电脑
打印机共享设置教程 取消禁用Guest用户,因为别人要访问安装打印机的按个电脑就是以guest账户访问的。 点击【开始】按钮,在【计算机】上右键,选择【管理】,如下图所示: 在弹出的【计算机管理】窗口中找到【Guest】用户 双击【Guest】,打开【Guest属性】窗口,确保【账户已禁用】选项没有被勾选 设...
win7系统如何安装hp5200LX打印机   1、首先连接USB线(线不要过长,2米以内),在设备和打印机中会多出来一个5200LX的图标,上面有一个黄色感叹号。 2、在5200lx图标上右键,选择属性; 3、在属性窗口中,切换到硬件标签矾,找到并选择Generic IEEE1284.4 printing support,点击属性; 4、切换到驱动程序标签页,点...
标签: 电脑入门
下面手把手教大家如何安装与更换针式打印机的色带!为了帮助各位高效地用好针式打印机,同时尽量避免打印机生病,本文下面就从一些使用细节出发,来对针式打印机的使用和保养进行一次再回首,希望能对新人们带来一定的收获! 1、自己动手换色带 其实要自己动手来更换打印色带并不是太难,但是不同类型的针打式打印机,它们的色带架的结...

经验教程

478

收藏

81
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部