Печать форм на нескольких страницах - PullRequest
0 голосов
/ 21 июля 2011

У меня есть 3 метода печати: printa, printb и printc (каждый печатает форму).Все 3 формы должны быть напечатаны на нескольких страницах.Как мне распечатать на 3 страницах?

Я знаю, что нам нужно использовать обработчик событий и использовать currentpage и e.hasmorepages, но я не уверен, как его использовать.

Ответы [ 2 ]

1 голос
/ 21 июля 2011

Просто следите за номером страницы.Вы устанавливаете его в 0 в событии BeginPrint и увеличиваете его каждый раз, когда вызывается PrintPage.Как это:

    int pageNumber;

    private void printDocument1_BeginPrint(object sender, System.Drawing.Printing.PrintEventArgs e) {
        pageNumber = 0;
    }

    private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) {
        ++pageNumber;
        e.HasMorePages = true;
        switch (pageNumber) {
            case 1: printa(e); break;
            case 2: printb(e); break;
            case 3: printc(e); e.HasMorePages = false; break;
        }
    }
0 голосов
/ 21 июля 2011

Да, это может быть довольно неясным. Вот как я это сделал для печати отчетов Reporting Services (массив изображений MetaFile в приведенном ниже коде).

public void Print()
{
    if (emfImage == null || emfImage.Count <= 0)
    {
        throw new ArgumentException("An image is required to print.");
    }

    printer = printer.Trim();
    if (string.IsNullOrEmpty(printer))
    {
        throw new ArgumentException("A printer is required.");
    }

    printingPage = 0;
    PrintDocument pd = new PrintDocument();
    pd.PrinterSettings.PrinterName = printer;
    pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
    pd.Print();
}

private void pd_PrintPage(object sender, PrintPageEventArgs e)
{
    Metafile page = emfImage[printingPage];
    e.Graphics.DrawImage(page, 0, 0, page.Width, page.Height);

    e.HasMorePages = ++printingPage < emfImage.Count;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...