2014-11-24 91 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;