首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Printdocument“句柄无效”错误

Printdocument“句柄无效”错误
EN

Stack Overflow用户
提问于 2014-12-17 20:25:29
回答 2查看 2.5K关注 0票数 0

当我尝试打印到默认打印机以外的指定打印机时,系统会抛出一个异常“句柄无效”。但是,在调用print之前,我使用PrinterSettings.IsValid进行检查,并且打印设置是有效的。当我将默认打印机更改为以前被称为“无效”的打印机时,异常就会消失。这不是一个令人满意的解决方案,因为我的用户需要向不同的打印机打印不同的东西,他们不应该离开应用程序来更改他们的默认打印机。我也尝试过用PrinterName设置创建一个“新”打印机设置对象,但这没有帮助。

有人见过这个吗?

代码在某种程度上是不相关的,因为只要您只在默认打印机上打印,它就能工作,但是我使用PrintDocument类来进行打印。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-17 21:09:52

好的,一个很糟糕的工作是以编程方式将默认打印机更改为目标打印机,打印文档,然后用以下代码更改默认打印机:

代码语言:javascript
复制
[DllImport("Winspool.drv")]
private static extern bool SetDefaultPrinter(string printerName);

然后在我的印刷部分:

代码语言:javascript
复制
var defaultPrinterName = _printDoc.PrinterSettings.PrinterName;
_printDoc.PrinterSettings.PrinterName = _settings.PrinterName;

if (_printDoc.PrinterSettings.IsValid)
{
    SetDefaultPrinter(_settings.PrinterName);
    _printDoc.Print();
    SetDefaultPrinter(defaultPrinterName); 
} 
票数 0
EN

Stack Overflow用户

发布于 2014-12-17 21:33:34

你确定你有正确的打印机名称吗?我们使用相同的代码打印到预定义的pritner,并且从未出现过任何问题。打印机名称应该是InstalledPrinters列表的成员。

代码语言:javascript
复制
System.Drawing.Printing.PrinterSettings.InstalledPrinters
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27534233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档