Добавление страниц в документ при выполнении функции c# - PullRequest
0 голосов
/ 10 июля 2020

У меня вопрос. Я хочу распечатать строки из таблицы данных через документ печати на страницу. Для каждой новой строки я хочу добавить новую страницу и прикрепить ее к другой, но в моем случае он печатает только последнюю строку.

Вот что у меня есть:

  var rb_print_diag = new PrintDialog();
  PrintDocument rb_normal_label = new PrintDocument();
  rb_print_diag.Document = rb_normal_label;

                      Int32 selectedRowCount = rb_datagridview_selected.Rows.GetRowCount(DataGridViewElementStates.Selected);

                    if (selectedRowCount > 0)
                    {
                        for (int i = 0; i < selectedRowCount; i++)
                        {
rb_norm_label.rb_build_normal_label(String a, String b, String c, String d); //String that will be sended to function in print class
 rb_normal_label.PrintPage += new PrintPageEventHandler(rb_norm_label.rb_print)
}

                    DialogResult rb_printing_diag_result = rb_print_diag.ShowDialog();

                    DialogResult rb_printing_diag_result = rb_print_diag.ShowDialog();
                    if (rb_printing_diag_result == DialogResult.OK)
                    {
                        rb_normal_label.Print();
                    }

Внутри другого класса я сохраняю значения в Strings и помещаю их в график c

public void rb_print(Object sender, PrintPageEventArgs e)
        {
            e.HasMorePages = true;

            //Print Labels
            Graphics graphic = e.Graphics;
            Font font = new Font("Microsoft Sans Serif", 14);
            float fontHeight = font.GetHeight();

            int startX = 10;
            int startY = 10;
            int offset = 40;

            graphic.DrawString("       Some Text", new Font("Calibri", 20), new SolidBrush(Color.Black), startX, startY);
            string top = "Etikette".PadRight(40);
            graphic.DrawString(top, font, new SolidBrush(Color.Black), startX, startY + offset);
            offset = offset + (int)fontHeight;
            graphic.DrawString("------------------------------------------", font, new SolidBrush(Color.Black), startX, startY + offset);
            offset = offset + (int)fontHeight + 5;

            offset = offset + 120;
            graphic.DrawString("Some Text: ".PadRight(30) + String.Format("{0:c}", v1), new Font("Calibri", 14, FontStyle.Bold), new SolidBrush(Color.Black), startX, startY + offset);
            offset = offset + 30;
            graphic.DrawString("Some Text: ".PadRight(30) + String.Format("{0:c}", v1), font, new SolidBrush(Color.Black), startX, startY + offset);
            offset = offset + 30;
            graphic.DrawString("Some Text: ".PadRight(30) + String.Format("{0:c}", v1), font, new SolidBrush(Color.Black), startX, startY + offset);
            offset = offset + 30;
            graphic.DrawString("Some Text:  ".PadRight(30) + String.Format("{0:c}", v1), font, new SolidBrush(Color.Black), startX, startY + offset);
            offset = offset + 30;
            graphic.DrawString("Some Text: ".PadRight(30) + String.Format("{0:c}", v1), font, new SolidBrush(Color.Black), startX, startY + offset);
            offset = offset + 30;
            graphic.DrawString("Some Text: ".PadRight(30) + String.Format("{0:c}", v1), font, new SolidBrush(Color.Black), startX, startY + offset);
            offset = offset + 30;
            graphic.DrawString("Some Text: ".PadRight(30) + String.Format("{0:c}", v1), font, new SolidBrush(Color.Black), startX, startY + offset);
            offset = offset + 30;
            graphic.DrawString("Some Text: ".PadRight(30) + String.Format("{0:c}", v1), font, new SolidBrush(Color.Black), startX, startY + offset);
            offset = offset + 30;
            graphic.DrawString("Some Text: ".PadRight(30) + String.Format("{0:c}", v1), font, new SolidBrush(Color.Black), startX, startY + offset);
            offset = offset + 30;
            graphic.DrawString("Some Text: ".PadRight(30) + String.Format("{0:c}", v1), font, new SolidBrush(Color.Black), startX, startY + offset);
            offset = offset + 30;

            Image img = Image.FromFile("Barcode_Normal_" + rb_barcodeTXT + ".bmp");
            Point loc = new Point(100, 100);
            e.Graphics.DrawImage(img, loc);
            img.Dispose();

e.HasMorePages = False;
        }

Но он будет печатать только последнюю строку, которую я отправляю, и в документе также есть только одна страница, но если в сетке данных три строки, должно быть три страницы с одинаковым выводом, но разными значениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...