PrintDocument.PrinterSettings.PrinterName
デフォルトのプリンタにどのように設定しますか?
オペレーティングシステムでデフォルトのプリンタを設定することについて話しているのではありません。むしろ、デフォルトのプリンターで印刷するようにPrintDocumentオブジェクトを設定することについて話しています。
PrintDocument.PrinterSettings.PrinterName
デフォルトのプリンタにどのように設定しますか?
オペレーティングシステムでデフォルトのプリンタを設定することについて話しているのではありません。むしろ、デフォルトのプリンターで印刷するようにPrintDocumentオブジェクトを設定することについて話しています。
私の理解が正しければ、(1) PrintDocument を再作成せず に、 (2) 既に別のプリンターに設定している可能性がある場合 、または (3)デフォルトのプリンタは、PrintDocument が最初に作成された時点から変更されている可能性があります (そのため、最初の構築後にターゲット インスタンスによって提供されるデフォルトを単にキャッシュすることに頼ることはできません)。
この場合、「C# get default printer name」を検索すると、stackoverflow に関する次の優れた投稿が表示されます: What's the best way to get the default printer in .NET
PrintDocument
上位投票の回答で提供されたサンプルに基づいて構築し、再作成したくないいくつかの設定が既に存在することを考慮してください。PrinterSettings
デフォルトのプリンター名をコピーするためだけに、クラスの新しいインスタンスを作成できます。
// Create a new instance of the PrinterSettings class, which
// we will only use to fetch the default printer name
System.Drawing.Printing.PrinterSettings newSettings = new System.Drawing.Printing.PrinterSettings();
// Copy the default printer name from our newSettings instance into our
// pre-existing PrintDocument instance without recreating the
// PrintDocument or the PrintDocument's PrinterSettings classes.
existingPrintDocumentInstance.PrinterSettings.PrinterName = newSettings.PrinterName;
WMI などの代替手法については、リンクされた投稿を確認できますが、これが最も簡単でクリーンなソリューションだと思います。
デフォルトのプリンターに自動的に初期化されます。何もしない。
GetDefaultPrinter()
{ PrinterSettings settings = new PrinterSettings();
foreach (string printer in PrinterSettings.InstalledPrinters)
{ settings.PrinterName = printer;
if (settings.IsDefaultPrinter)
return printer;
}
return string.Empty;
}
オブジェクトに何も設定しない場合、デフォルトではデフォルトのプリンタに到達します。探していた公式ソースは次のとおりです。MSDNPrintDocumentクラスへのリンク
例のすぐ上に書かれた文にマークを付けます。「次のコード例は、C:\ My Documents\MyFile.txtという名前のファイルをデフォルトのプリンターで印刷します。」
HTH
私が間違っている場合は修正してください。ただし、デフォルトのプリンターの名前を取得してPrintDocument.PrinterSettings.PrinterName
から、これに設定しようとしています。
これを使用PrintDocument.PrinterSettings.PrinterName
すると、デフォルトでデフォルトのプリンターが使用されます。