Вопрос по c#, vb.net, .net, winforms, printing – Подача формы в печати c #

6

Я пытаюсь сделать подачу формы & amp; пропустите 1 страницу во время печати, однако с приведенными ниже строками кода я не могу сделать подачу формы.

private void InserPageBreak(System.Drawing.Printing.PrintPageEventArgs e)
{
      Font sFont = new Font("Arial", 10);
      Brush sBrush = Brushes.White;
      e.Graphics.DrawString("\f", sFont, sBrush, 0, 0);
}

Я использую PrintDialog для печати содержимого страницы. Я использую & quot; \ f & quot; Символ подачи формы в C #.

Любые мысли о том, как реализовать / заставить эту форму подачи работать?

PS: я даже попробовал это:

// ASCII-код 12 - код управления подачей формы принтера.

 string test = char.ConvertFromUtf32(12);
 e.Graphics.DrawString(test, sFont, sBrush, 0, 0);

внутренне c # преобразует это в «\ f», но, если кто-то, кто внедрил «\ f», не делал подачу форм, поделитесь своими мыслями.

Спасибо, у меня такая же концепция, к сожалению, URL, указанный в этой ссылке с сайта Microsoft, не открывается. Sharpeye500
Только из любопытства, ты пытался сменить кисть на черный? Joshua Drake
Нет, я тоже пробовал с Блэком, не сработало. Sharpeye500
Делайте необработанные ссылки: Msdn.microsoft.com / EN-US / библиотека / ... или Msdn.microsoft.com / EN-US / библиотека / cwbe712d.aspx Работа Joshua Drake

Ваш Ответ

1   ответ
5

ля отправки фида форм на принтер. Вызывая e.Graphics.DrawString ("\ f", sFont, sBrush, 0, 0), вы просто визуализируете текст в документе для печати, который никогда не будет интерпретироваться принтером как подача формы.

Поскольку вы знаете, где хотите разбить страницу, вместо вызова метода InserPageBreak установите PrintPageEventArgs.HasMorePages = true в обработчике события PrintPage. Это отправит фид формы на принтер, и ваше событие PrintPage будет продолжаться до тех пор, пока вы не установите HasMorePages = false.

Надеюсь, это поможет. Может быть полезно увидеть, как вы реализовали свой обработчик событий PrintPage.

Пример

Используйте обработчик BeginPrint для инициализации данных перед печатью

    void _document_BeginPrint(object sender, PrintEventArgs e)
    {
        //generate some dummy strings to print
        _pageData = new List<string>()
                {
                    "Page 1 Data",
                    "Page 2 Data",
                    "Page 3 Data",
                };

        // get enumerator for dummy strings
        _pageEnumerator = _pageData.GetEnumerator();

        //position to first string to print (i.e. first page)
        _pageEnumerator.MoveNext();
    }

В обработчике PrintPage печатайте по одной странице за раз и установите HasMorePages, чтобы указать, есть ли другая страница для печати. В этом примере будут напечатаны три страницы, по одной строке на каждой странице. После 3-й страницы _pageEnumerator.MoveNext () вернет false, завершив работу печати.

    void _document_PrintPage(object sender, PrintPageEventArgs e)
    {
        Font sFont = new Font("Arial", 10);
        Brush sBrush = Brushes.Black;

        //print current page
        e.Graphics.DrawString(_pageEnumerator.Current, sFont, sBrush, 10, 10);

        // advance enumerator to determine if we have more pages.
        e.HasMorePages = _pageEnumerator.MoveNext();
    }
+ 1 Ударь меня примерно на 30 секунд. Joshua Drake
Я добавил короткий образец. Я проверил его перед публикацией, и он печатает 3 отдельные страницы. figabytes
Благодарность. Я пытался установить PrintPageEventArgs.HasMorePages = true; Это не делает подачу формы. Есть ли у вас быстрый образец / пример, чтобы показать? Sharpeye500

Похожие вопросы