У меня вопрос. Я хочу распечатать строки из таблицы данных через документ печати на страницу. Для каждой новой строки я хочу добавить новую страницу и прикрепить ее к другой, но в моем случае он печатает только последнюю строку.
Вот что у меня есть:
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;
}
Но он будет печатать только последнюю строку, которую я отправляю, и в документе также есть только одна страница, но если в сетке данных три строки, должно быть три страницы с одинаковым выводом, но разными значениями.