首页 > 编程语言 >C#枚举系统安装的所有打印机

C#枚举系统安装的所有打印机

时间:2023-06-30 12:06:49浏览次数:47  
标签:打印机 printerList C# label1 System 枚举 PrinterSettings new

在下面的程序中我们将把系统中所安装的打印机用列表框列出来,同时为默认打印机设置缺省值。

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

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

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



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

  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 in 
PrinterSettings.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 
//编写人:蚕蛹([email protected]) 
//日期:2003-03-20 
using 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()); 
  } 

 } 
}

作者:古道轻风



标签:打印机,printerList,C#,label1,System,枚举,PrinterSettings,new
From: https://blog.51cto.com/u_15949547/6589478

相关文章

  • CNN GRU 注意力 时序预测 基于加注意力机制(CNN-GRU-Attention)的时间序列预测程序,预测
    CNNGRU注意力时序预测基于加注意力机制(CNN-GRU-Attention)的时间序列预测程序,预测精度很高。可用于做风电功率预测,电力负荷预测,交通预测,负荷预测,经济预测,排放预测等标记注释清楚,可直接换数据运行。代码实现训练与测试精度分析。原创文章,转载请说明出处,资料来源:http://imgcs.......
  • 基于mpc(最优控制)的车辆自适应巡航控制(acc),模型预测控制,通过carsim与matlab联防实现速度
    基于mpc(最优控制)的车辆自适应巡航控制(acc),模型预测控制,通过carsim与matlab联防实现速度与间距控制。最优控制(MPC):最优控制是一种优化方法,用于设计系统的控制策略,以使系统在给定约束条件下达到最优性能。车辆自适应巡航控制(ACC):车辆自适应巡航控制是一种智能驾驶技术,通过使用传感器和......
  • 基于UDS的BootLoader上位机源代码的重写版本,该版本使用C#语言编写。该上位机源代码支
    基于UDS的BootLoader上位机源代码的重写版本,该版本使用C#语言编写。该上位机源代码支持ISO15765通信协议,并且兼容PeakCAN、ZJGCAN等多种CAN卡。此外,它还支持解析S-record格式的二进制文件基于UDS的BootLoader上位机源代码(C#)基于UDS的BootLoader上位机源代码,支持ISO15765通信,支持......
  • 一份EtherCAT主站的FPGA Verilog代码 ethercat 主站 FPGA verilog 代码
    一份EtherCAT主站的FPGAVerilog代码ethercat主站FPGAverilog代码涉及到的知识点和领域范围是:EtherCAT通信协议、FPGA(现场可编程门阵列)和Verilog(硬件描述语言)。原创文章,转载请说明出处,资料来源:http://imgcs.cn/5c/652098268519.html首先,让我们来介绍一下EtherCAT通信协议。E......
  • docker部署mysql主从同步
    1. 规划主机ipmaster10.0.0.1slave10.0.0.12. 查看镜像,下载镜像,导入镜像的命令docker imagesdocker pullmysql:5.7dockerload-imysql.tar3. 启动镜像服务 dockerrun-d --namemysql-master -p3306:3306 -eMYSQL_ROOT_PASSWORD=root@1234 mysql:5.7.174. 复......
  • 一个基于STM32H743芯片和SOEM协议栈的EtherCAT主站源码。该源码提供了配套的CUBE工程,
    一个基于STM32H743芯片和SOEM协议栈的EtherCAT主站源码。该源码提供了配套的CUBE工程,使用的是SOEM协议栈的1.3.1版本。此外,还可以使用NUCLEO-H743ZI开发板进行配套开发。该系统支持DC同步,并且可以与多种驱动器型号配合使用,包括汇川IS620N、三洋RS3、赛孚德ASD620B、埃斯顿ProNet、......
  • docker部署mongodb副本集
    1.规格ip地址端口192.168.1.10127017192.168.1.10227017192.168.1.103270172.部署操作2.1 以下操作分别在三台不同的ECS服务器上操作[root@ecs-ff50-73e8-0002~]#mkdir/path/to-p[root@ecs-ff50-73e8-0002~]#cd/path/to/[root@ecs-ff50-73e8-0002to]#ls[root@ecs-ff50-73......
  • 赛灵思FPGA匹配CMV2000,图纸资料齐全,提供代码及说明,pcb等,可科研,可生产
     "赛灵思公司的可编程逻辑器件(FPGA)与CMV2000相匹配,我们提供了完整的图纸资料,包括代码和说明,还有PCB设计等。这些资源既可以用于科研,也可以用于生产。"涉及到的知识点和领域范围包括:1.赛灵思(Xilinx):赛灵思是一家知名的半导体公司,专注于可编程逻辑器件(FPGA)和相关技术的研发和制造......
  • Docker部署redis集群
    1.规划ip地址端口数据存储位置192.168.103.587000/var/lib/redis/70007003/var/lib/redis/7003192.168.103.417001/var/lib/redis/70017004/var/lib/redis/7004192.168.103.1247002/var/lib/redis/70027005/var/lib/redis/70052.创建数据存储目录,及配置文件,导入镜像文件2.1创建好用......
  • 三相PFC程序30KW充电桩的500~1000Vdc 0~60A,绝对与实物一致的30KW三相PFC程序
    这是一个关于30千瓦三相功率因数校正(PFC)充电桩的描述。该充电桩的输入电压范围是500~1000伏特直流,输出电流范围是0~60安培。它的技术指标与实际产品完全一致。在技术指标参数中,如果发现某些参数在程序中没有提及,可以参考以下文件资料:1.原理图,使用AltiumDesigner10格式。2.BO......