2014-11-24 32 views
2

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

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

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

形式:打印机设置,当我加载下面的代码被执行

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

这正常工作,在PrinterSettings变量initiallized和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: 

但我无法得到它的工作。

+2

Zebra支持如何? – 2014-11-24 16:11:20

+0

你好Mikko,去试试看。 – 2014-11-25 08:02:11

+0

我编辑过你的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 – 2014-12-18 06:02:05

回答

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;