打印机设置不占用份数

本文关键字:设置 打印机 | 更新日期: 2023-09-27 18:31:48

我有一个关于 C# 中的打印机设置的问题。当我在桌面打印机上将打印机设置.副本设置为 2 时,它将打印 2 个文档。

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

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

表单

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

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

这工作正常,打印机设置变量被初始化,打印机名称设置为我选择的打印机。然后在副本数下,我有以下内容:

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打印对话框,我只想使用我自己的打印对话框:

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;