PrinterSettings不占用份数

时间:2014-11-24 16:04:47

标签: c# printing zebra-printers printdialog

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

但是,当我在Zebra GK420d Label printer上将副本设置为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:

但我无法让它发挥作用。

1 个答案:

答案 0 :(得分:2)

当您致电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;