XpsDocumentWriter.WritingPrintTicketRequired Olay

Tanım

Bir Write veya yöntemi belgeye veya WriteAsync yazdırma kuyruğuna eklemeden PrintTicket hemen önce gerçekleşir.

C#
public override event System.Windows.Documents.Serialization.WritingPrintTicketRequiredEventHandler WritingPrintTicketRequired;

Olay Türü

Örnekler

Aşağıdaki örnekte olayın nasıl kullanılacağı gösterilmektedir WritingPrintTicketRequired .

C#

// ---------------- PrintMultipleFixedContentDocuments ----------------
/// <summary>
///   Prints the content of a multiple fixed document sequence.</summary>
/// <param name="pq">
///   The print queue to print to.</param>
/// <param name="async">
///   true to print asynchronously; false to print synchronously.</param>
public void PrintMultipleFixedContentDocuments(PrintQueue pq, bool async)
{
    // Create a multiple document FixedDocumentSequence.
    FixedDocumentSequence fds =
        _wpfContent.LoadFixedDocumentSequenceFromDocument();

    // Create a document writer to print to.
    XpsDocumentWriter xdwPrint = GetPrintXpsDocumentWriter(pq);

    // Set the event handler for creating print tickets for
    // each document within the fixed document sequence.
    xdwPrint.WritingPrintTicketRequired +=
        new WritingPrintTicketRequiredEventHandler(
            MultipleFixedContentDocuments_WritingPrintTicketRequired);
    _firstDocumentPrintTicket = 0;

    // Print either asynchronously or synchronously.
    if (async)
        PrintMultipleFixedContentDocumentsAsync(xdwPrint, fds);
    else
        PrintMultipleFixedContentDocuments(xdwPrint, fds);
}// end:PrintMultipleFixedContentDocuments()

Olay işleyicisi aşağıdaki örnekte oluşturulmuştur.

C#

// ----- MultipleFixedContentDocuments_WritingPrintTicketRequired -----
/// <summary>
///   Creates a PrintTicket event handler for
///   printing a FixedDocumentSequence.</summary>
private void MultipleFixedContentDocuments_WritingPrintTicketRequired(
                Object sender, WritingPrintTicketRequiredEventArgs e)
{
    if (e.CurrentPrintTicketLevel ==
            PrintTicketLevel.FixedDocumentSequencePrintTicket)
    {
        // Create a PrintTicket for the FixedDocumentSequence. Any
        // PrintTicket setting specified at the FixedDocumentSequence
        // level will be inherited by lower level (i.e. FixedDocument or
        // FixedPage) unless there exists lower level PrintTicket that
        // sets the setting differently, in which case the lower level
        // PrintTicket setting will override the higher level setting.
        PrintTicket ptFDS = new PrintTicket();
        ptFDS.PageOrientation = PageOrientation.Portrait;
        ptFDS.Duplexing = Duplexing.TwoSidedLongEdge;
        e.CurrentPrintTicket = ptFDS;
    }

    else if (e.CurrentPrintTicketLevel ==
        PrintTicketLevel.FixedDocumentPrintTicket)
    {
        // Use different PrintTickets for different FixedDocuments.
        PrintTicket ptFD = new PrintTicket();

        if (_firstDocumentPrintTicket <= 1)
        {   // Print the first document in black/white and in portrait
            // orientation.  Since the PrintTicket at the
            // FixedDocumentSequence level already specifies portrait
            // orientation, this FixedDocument can just inherit that
            // setting without having to set it again.
            ptFD.PageOrientation = PageOrientation.Portrait;
            ptFD.OutputColor = OutputColor.Monochrome;
            _firstDocumentPrintTicket++;
        }

        else // if (_firstDocumentPrintTicket > 1)
        {   // Print the second document in color and in landscape
            // orientation.  Since the PrintTicket at the
            // FixedDocumentSequence level already specifies portrait
            // orientation, this FixedDocument needs to set its
            // PrintTicket with landscape orientation in order to
            // override the higher level setting.
            ptFD.PageOrientation = PageOrientation.Landscape;
            ptFD.OutputColor = OutputColor.Color;
        }

        e.CurrentPrintTicket = ptFD;
    }// end:else if (CurrentPrintTicketLevel==FixedDocumentPrintTicket)

    // Even though we don't show code for specifying PrintTicket for
    // the FixedPage level, the same inheritance-override logic applies
    // to FixedPage as well.
}// end:MultipleFixedContentDocuments_WritingPrintTicketRequired()

Açıklamalar

WritingPrintTicketRequired , bir olay işleyicisinin yazma işlemine geçirilen olay işleyicisinin yerine yenisini PrintTicket eklemesini sağlar.

Aşağıdaki dört Write ve WriteAsync yöntemleri olayı çağırmaz WritingPrintTicketRequired :

Şunlara uygulanır

Ürün Sürümler
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10