|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
namespace System.Drawing.Printing;
/// <summary>
/// Provides data for the <see cref='PrintDocument.QueryPageSettings'/> event.
/// </summary>
public class QueryPageSettingsEventArgs : PrintEventArgs
{
private PageSettings _pageSettings;
/// <summary>
/// Initializes a new instance of the <see cref='QueryPageSettingsEventArgs'/> class.
/// </summary>
public QueryPageSettingsEventArgs(PageSettings pageSettings) : base() => _pageSettings = pageSettings;
/// <summary>
/// Gets or sets the page settings for the page to be printed.
/// </summary>
public PageSettings PageSettings
{
get
{
PageSettingsChanged = true;
return _pageSettings;
}
set
{
value ??= new PageSettings();
_pageSettings = value;
PageSettingsChanged = true;
}
}
/// <summary>
/// It's too expensive to compare 2 instances of PageSettings class, as the getters are accessing the printer
/// spooler, thus we track any explicit invocations of the setters or getters on this class, and this field tracks
/// if PageSettings property was accessed. It will return a false positive when the user is reading property values,
/// but we'll take a perf hit in this case assuming this event is not used often.
/// </summary>
internal bool PageSettingsChanged { get; set; }
}
|