之前写程序,调用Microsoft.Office.Interop.Word动态生成doc文档并打印。

  由于在打印时直接实例化一个Word.Document对象,并使用其PrintOut()方法打印,未设置Word.Application的ActivePrinter属性,导致打印时只能使用默认打印机打印,后来在窗体上加了一个下拉框,可以选择要使用的打印机,这样一来就方便多了。

  从网上借段代码,实现起来很简单:

  1. 引用一下System.Drawing.Printing,加一个string类型的全局变量oldActivePrn,用来保存目前系统设置的默认打印机名称;
  2. 在Form_Load里面遍历系统中已安装的打印机,放到ComboBox中,代码:
                    int i;string pkInstalledPrinters;using (PrintDocument pd = new PrintDocument()){for (i = 0; i < PrinterSettings.InstalledPrinters.Count; i++)  //开始遍历{pkInstalledPrinters = PrinterSettings.InstalledPrinters[i];  //取得名称cmbPrinterList.Items.Add(pkInstalledPrinters);               //加入ComboBoxif (pd.PrinterSettings.IsDefaultPrinter)                     //判断是否为默认打印机{OldActPrn = pd.PrinterSettings.PrinterName;              //保存名称,后面要用cmbPrinterList.Text = pd.PrinterSettings.PrinterName;    //显示默认打印机名称}}}
  3. 实例化Word.Application对象WordApp,实例化Wod.Document对象oDoc,在oDoc.PrintOut()之前,将WordApp.ActivePrinter设置为cmbPrinterList.Text,即将系统默认打印机设置为ComboBox中选择的打印机,然后开始打印,打印完毕,再将WordApp.ActivePrinter改回到OldActPrn即可。

  这样一来,不用到系统的“打印机”窗口设置默认打印机就可以随意指定打印机打印了。

C#WinForm程序中选择打印机打印相关推荐

  1. 在C# winform程序中调用WPF写的数学公式编辑器

    由于工作原因,需要在程序中加入数学公式编辑功能,因此在网上找了不少开源数学公式程序.经过比较,最终选择了Math-Editor-master程序(可以在github上搜索此名称). 我的程序(简称主程 ...

  2. C#中Winform程序中如何实现多维表头【不通过第三方报表程序】

    问题:C#中Winform程序中如何实现多维表头. 在网上搜了很多方法,大多数方法对于我这种新手,看的都不是很懂.最后在新浪博客看到了一篇比较易懂的文章:[DataGridView二维表头与合并单元格 ...

  3. 在winform程序中启动wpf窗体

    有时候需要在winform程序中利用wpf的许多优良特性,如何在其中启动wpf窗体呢? 前提:MainWindow.xaml是从别的地方copy到这个项目的,值得注意的是,除了MainWindow.x ...

  4. 转:WinForm程序中两份mdf文件问题的解决方法

    在项目中用程序中嵌入mdf文件的方式来进行SQLServer数据库开发非常方便,用来发布开源项目等很方便,点击就可以运行,免部署,特别是在教学中用起来更加方便,老师不用先将数据库文件detach再发给 ...

  5. 在WinForm程序中嵌入ASP.NET

    现在的流行趋势是桌面程序Web化,Web程序桌面化,呵呵.最终目标就是你中有我,我中有你.例如MSN Explorer就是一个很好的展示,让用户在使用的时候分不清什么时候是在本地什么时候是在网络.而这 ...

  6. 在Winform程序中设置管理员权限及为用户组添加写入权限

    在我们一些Winform程序中,往往需要具有一些特殊的权限才能操作系统文件,我们可以设置运行程序具有管理员权限或者设置运行程序的目录具有写入的权限,如果是在操作系统里面,我们可以设置运行程序以管理员身 ...

  7. 在WinForm程序中嵌入ASP.NET[转]

    在WinForm程序中嵌入ASP.NET 现在的流行趋势是桌面程序Web化,Web程序桌面化,呵呵.最终目标就是你中有我,我中有你.例如MSN Explorer就是一个很好的展示,让用户在使用的时候分 ...

  8. (转)在Winform程序中设置管理员权限及为用户组添加写入权限

    本文转载自:http://www.cnblogs.com/wuhuacong/p/5645172.html 在我们一些Winform程序中,往往需要具有一些特殊的权限才能操作系统文件,我们可以设置运行 ...

  9. java控件数组_在C# WinForm程序中创建控件数组及相应的事件处理

    控件数组是VB提供的一个优秀的设计解决方案,它能很方便快捷的处理大批同类控件的响应和时间处理,但不知为什么在C#中这个优秀特性没有传承下来,甚为可惜,本文将要探讨就是如何在C# WinForm程序实现 ...

最新文章

  1. 安全 - 堡垒机 - Jumpserver
  2. 多项式输出-Java
  3. db2数据备份到mysql_DB2数据库自动备份详解
  4. scanf中的%[^\n]%*c格式
  5. Python 数据分析三剑客之 Pandas(三):算术运算与缺失值的处理
  6. mysql修改7tf8mb4_更改MySQL数据库的编码为utf8mb4
  7. 条码扫描枪的连接与使用方法
  8. 英语语态,语态 被动:be的时态变化,一般过去时:一般现在时:一般将来时:主将从现:主祈从现:并列将来:现在完成时:
  9. vi与vim的区别以及常用命令
  10. 均衡发展计算机教室材料,均衡发展汇报材料
  11. 代码英雄:操作系统之战
  12. PHP内核之SAPI:Apache2 SAPI分析
  13. 中科大计算机与华科,2021全国理工科大学排名!打破传统模式,华科第二,哈工大第五...
  14. .net 发短信案例
  15. NSFC 国家自然科学基金查询
  16. 64位 RT-Thread 移植到 Cortex-A53 系统 bug 修复笔记
  17. 第十五章:国际化和本地化-gettext:消息编目-转换工作流概述
  18. 模块“CHUSBDLL.DLL.dll“可能与您正在运行的Windows版本不兼容。检查该模块是否与regsvr32.exe的x86或x64版本兼容 【已解决】
  19. 微雪2.9寸墨水屏在普中Z100(stm32f103zet6)板上点亮
  20. String类-统计子串在字符串中出现的次数

热门文章

  1. java多线程编程是什么_Java多线程程序设计机制是什么?
  2. STM32之EXTI
  3. android安卓手机升级版本,安卓系统怎么更新升级
  4. Word2vec训练中文维基百科
  5. 计算机科学与技术拼音,信息技术_英文_拼音_什么是信息技术_医学百科
  6. 一百套毕业设计开题报告和答辩PPT(附下载地址)
  7. android RecyclerView列表自动播放实现
  8. php短信验证码60秒时间限定
  9. 一个=电视+私人影院+KTV+游戏厅,爽!
  10. 一位蜗牛程序员十一年工作总结-2019