c# - PrinterSettings 不占用份数

标签 c# printing zebra-printers printdialog

我对 C# 中的 PrinterSettings 有疑问。当我在桌面打印机上将 PrinterSettings.Copies 设置为 2 时,它将打印 2 个文档。

但是,当我在 Zebra GK420d 标签打印机上将份数设置为 2 时,我定义的份数将被打印机的默认份数覆盖。 Zebra 打印机是唯一允许我在打印机设置(开始 -> 设备和打印机 -> 打印机属性)中定义份数的打印机。

但是,当我打开 PrintDialog 并将副本数设置为 2 时。但如果我以编程方式执行它,它将无法工作。这是我的情况:

表单:打印机设置,当我加载表单时,将执行以下代码

ps_Current = new PrinterSettings();
ps_Current.PrinterName = cbPrinters.Text;

这可以正常工作,PrinterSettings 变量已初始化,并且 PrinterName 已设置为我选择的打印机。然后在份数下我有以下内容:

ps_Current.Copies = (short)seAantalKopieen.Value;

这也可以正常工作(对于除 Zebra 打印机之外的所有打印机)。不知何故,Zebra 打印机采用默认打印机设置,而不是我使用代码输入的设置。

当我将代码更改为:

PrintDialog PD = new PrintDialog();
PD.PrinterSettings = ps_Current;
PD.ShowDialog();    
ps_Current = PD.PrinterSettings;

这将为我提供一个 PrintDialog 屏幕,我可以在其中选择打印机和份数。如果我在这里选择 Zebra 打印机并将份数更改为 2 份,它将可以工作。但我不想使用 Windows PrintDialog,我只想使用自己的打印对话框:

Printer:
Source:
Amount of copies:

但我无法让它工作。

最佳答案

当您调用PD.ShowDialog()时,您允许用户更改他们想要的任何设置。当用户单击“确定”打印文档时,他们选择的设置将更新 PD.PrinterSettings。您应该能够通过执行以下操作打印两份副本:

PrintDialog PD = new PrintDialog();
PD.ShowDialog();    
ps_Current = PD.PrinterSettings;
// Essentially you override what the user chose, which can be frustrating for the user.
ps_Current.Copies = (short)seAantalKopieen.Value;

关于c# - PrinterSettings 不占用份数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27109035/

相关文章:

c# - Web 请求/上传在最后失败

.net - 将页眉和页脚添加到 Printing.PrintDocument (.Net 2.0) 的最简单方法?

swift - CBPeripheral - "didWriteValueFor"出现错误 "The prepare queue is full."

c# - 如何从 TextBox 中的用户获取所需的键并在 Keyboard.isKeyDown(Key ."... ") 中使用它

c# - 计算 ArrayList C# 中的特定对象类型

c# - 将相同的对象保存在不同的表中

html - 使用 CSS 的页面方向

c++ - 我的 C++ 程序中的 char 数组不会打印任何内容

php - jZebra - 原始命令入门

html - 将 HTML 转换为 ZPL - javascript