PrintDocument
Defines a reusable object that sends output to a printer, when printing from a Windows Forms application.
using System.ComponentModel;
using System.Runtime.CompilerServices;
namespace System.Drawing.Printing
{
[NullableContext(1)]
[Nullable(0)]
[DefaultProperty("DocumentName")]
[DefaultEvent("PrintPage")]
[SRDescription("PrintDocumentDesc")]
public class PrintDocument : Component
{
private string _documentName = "document";
[Nullable(2)]
private PrintEventHandler _beginPrintHandler;
[Nullable(2)]
private PrintEventHandler _endPrintHandler;
[Nullable(2)]
private PrintPageEventHandler _printPageHandler;
[Nullable(2)]
private QueryPageSettingsEventHandler _queryHandler;
private PrinterSettings _printerSettings = new PrinterSettings();
private PageSettings _defaultPageSettings;
[Nullable(2)]
private PrintController _printController;
private bool _originAtMargins;
private bool _userSetPageSettings;
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
[SRDescription("PDOCdocumentPageSettingsDescr")]
public PageSettings DefaultPageSettings {
get {
return _defaultPageSettings;
}
set {
_defaultPageSettings = (value ?? new PageSettings());
_userSetPageSettings = true;
}
}
[DefaultValue("document")]
[SRDescription("PDOCdocumentNameDescr")]
public string DocumentName {
get {
return _documentName;
}
set {
_documentName = (value ?? "");
}
}
[DefaultValue(false)]
[SRDescription("PDOCoriginAtMarginsDescr")]
public bool OriginAtMargins {
get {
return _originAtMargins;
}
set {
_originAtMargins = value;
}
}
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
[SRDescription("PDOCprintControllerDescr")]
public PrintController PrintController {
get {
return _printController ?? (_printController = new StandardPrintController());
}
set {
_printController = value;
}
}
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
[SRDescription("PDOCprinterSettingsDescr")]
public PrinterSettings PrinterSettings {
get {
return _printerSettings;
}
set {
if (value == null)
value = new PrinterSettings();
_printerSettings = value;
if (!_userSetPageSettings)
_defaultPageSettings = _printerSettings.DefaultPageSettings;
}
}
[SRDescription("PDOCbeginPrintDescr")]
public event PrintEventHandler BeginPrint {
add {
_beginPrintHandler = (PrintEventHandler)Delegate.Combine(_beginPrintHandler, value);
}
remove {
_beginPrintHandler = (PrintEventHandler)Delegate.Remove(_beginPrintHandler, value);
}
}
[SRDescription("PDOCendPrintDescr")]
public event PrintEventHandler EndPrint {
add {
_endPrintHandler = (PrintEventHandler)Delegate.Combine(_endPrintHandler, value);
}
remove {
_endPrintHandler = (PrintEventHandler)Delegate.Remove(_endPrintHandler, value);
}
}
[SRDescription("PDOCprintPageDescr")]
public event PrintPageEventHandler PrintPage {
add {
_printPageHandler = (PrintPageEventHandler)Delegate.Combine(_printPageHandler, value);
}
remove {
_printPageHandler = (PrintPageEventHandler)Delegate.Remove(_printPageHandler, value);
}
}
[SRDescription("PDOCqueryPageSettingsDescr")]
public event QueryPageSettingsEventHandler QueryPageSettings {
add {
_queryHandler = (QueryPageSettingsEventHandler)Delegate.Combine(_queryHandler, value);
}
remove {
_queryHandler = (QueryPageSettingsEventHandler)Delegate.Remove(_queryHandler, value);
}
}
public PrintDocument()
{
_defaultPageSettings = new PageSettings(_printerSettings);
}
protected internal virtual void OnBeginPrint(PrintEventArgs e)
{
_beginPrintHandler?.Invoke(this, e);
}
protected internal virtual void OnEndPrint(PrintEventArgs e)
{
_endPrintHandler?.Invoke(this, e);
}
protected internal virtual void OnPrintPage(PrintPageEventArgs e)
{
_printPageHandler?.Invoke(this, e);
}
protected internal virtual void OnQueryPageSettings(QueryPageSettingsEventArgs e)
{
_queryHandler?.Invoke(this, e);
}
public void Print()
{
PrintController.Print(this);
}
public override string ToString()
{
return "[PrintDocument " + DocumentName + "]";
}
}
}