У меня есть несколько дней, чтобы решить эту большую проблему, которая у меня есть в C #: я пытаюсь напечатать 21 формат билета на статьи (Билл), но у бумажного рулона есть предел, и он занимает несколько страниц, разделенных печатью, но я не могу сделатьвыполните переход со страницы для печати статьи № 17 и перейдите на другую страницу с № 18, пожалуйста, помогите ..
private void DrawItems(System.Drawing.Printing.PrintPageEventArgs e)
{
int linesprinted = 0;
int linesperpage = 17;
int numberitems = items.Count; //21
//numberitems / linespage = 1.23 = 2 Pages True :)
if (linesprinted <= linesperpage)
{
linesprinted++;
e.HasMorePages = false;
}
else {
linesprinted=0;
e.HasMorePages = true;
}
//print items
OrderItem ordIt = new OrderItem('?');
gfx.DrawString("C/P DESCRIPCION TOTAL", new Font(fontName, fontSize, FontStyle.Regular), myBrush, leftMargin, YPosition(), new StringFormat());
DrawEspacio();
gfx.DrawString(DottedLine(), new Font(fontName, 9, FontStyle.Regular), myBrush, leftMargin, YPosition(), new StringFormat());
count++;
foreach (string item in items)
{
String ItemCantidad = ordIt.GetItemCantidad(item);
String ItemPrice = ordIt.GetItemPrice(item);
Int16 not_equal = 0;
gfx.DrawString(ItemCantidad + " x", new Font(fontName, fontSize, FontStyle.Regular), myBrush, leftMargin, YPosition(), new StringFormat());
line = ordIt.GetItemUnitPrice(item);
line = AlignRightText(line.Length) + line;
gfx.DrawString(" " + line, printFont, myBrush, leftMargin, YPosition(), new StringFormat());
string name = ordIt.GetItemName(item);
leftMargin = 0;
if (name.Length > maxCharDescription)
{
int currentChar = 0;
int itemLenght = name.Length;
while (itemLenght > maxCharDescription)
{
line = ordIt.GetItemName(item);
gfx.DrawString(" " + line.Substring(currentChar, maxCharDescription), new Font(fontName, fontSize, FontStyle.Regular), myBrush, leftMargin, YPosition(), new StringFormat());
count++;
not_equal++;
if (not_equal == 1)
{
gfx.DrawString(ItemPrice, new Font(fontName, fontSize, FontStyle.Regular), myBrush, leftMargin, YPosition(), new StringFormat());
}
currentChar += maxCharDescription;
itemLenght -= maxCharDescription;
}
line = ordIt.GetItemName(item);
gfx.DrawString(" " + line.Substring(currentChar, line.Length - currentChar), new Font(fontName, fontSize, FontStyle.Regular), myBrush, leftMargin, YPosition(), new StringFormat());
count++;
gfx.DrawString("-----", new Font(fontName, fontSize, FontStyle.Regular), myBrush, leftMargin, YPosition(), new StringFormat());
count++;
}
else
{
gfx.DrawString(" " + ordIt.GetItemName(item), new Font(fontName, fontSize, FontStyle.Regular), myBrush, leftMargin, YPosition(), new StringFormat());
count++;
gfx.DrawString(ItemPrice, new Font(fontName, fontSize, FontStyle.Regular), myBrush, leftMargin, YPosition(), new StringFormat());
count++;
gfx.DrawString("-----", new Font(fontName, fontSize, FontStyle.Regular), myBrush, leftMargin, YPosition(), new StringFormat());
count++;
}
} //end foreach
leftMargin = 0;
gfx.DrawString(DottedLine(), new Font(fontName, 9, FontStyle.Regular), myBrush, leftMargin, YPosition(), new StringFormat());
DrawEspacio();
} //end function