2

C# の PrinterSettings について質問があります。デスクトッププリンターで PrinterSettings.Copies を 2 に設定すると、2 つのドキュメントが印刷されます。

ただし、部数を 2 に設定するZebra GK420d Label printerと、定義した部数がプリンターのデフォルトの部数で上書きされます。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:

しかし、私はそれを機能させることができません。

4

1 に答える 1

2

電話をかけるPD.ShowDialog()と、ユーザーが必要な設定を変更できるようになります。ユーザーが [OK] をクリックしてドキュメントを印刷すると、選択した設定によってPD.PrinterSettings. 次のようにして、2 つのコピーを印刷できるはずです。

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;
于 2014-12-18T05:32:35.303 に答える