Печать новых страниц с помощью e.HasMorePagesC#

Место общения программистов C#
Ответить
Гость
 Печать новых страниц с помощью e.HasMorePages

Сообщение Гость »


Я немного не понимаю, как можно использовать свойство HasMorePages. Я пытаюсь напечатать еще несколько страниц в зависимости от метода YPosition, но это вызывает бесконечный цикл печати страниц.

Это мой код:

частный float YPosition() { return this.TopMargin + ((float)this.LinesCount * this.Font.GetHeight(this.Graphics) + (float)this.ImagesHeight); } Private void TicketPrintPage (отправитель объекта, PrintPageEventArgs e) { e.Graphics.PageUnit = GraphicsUnit.Миллиметр; this.Graphics = e.Graphics; foreach (кортеж Tuple в this.Objects) { переключатель (tuple.Item2) { случай LineTypes.LINE: this.Graphics.DrawString((String)tuple.Item1, this.Font, this.SolidBrush, this.LeftMargin, this.YPosition(), new StringFormat()); это.LinesCount++; перерыв; случай LineTypes.IMAGE: Изображение Изображение = (Изображение)tuple.Item1; // Центрируем изображение, используя PaperSize Графика GraphicsImage = Graphics.FromImage(Image); RectangleF RectangleF = e.MarginBounds; RectangleF.Offset(-e.PageSettings.HardMarginX, -e.PageSettings.HardMarginY); float InchX = RectangleF.X/100f + (RectangleF.Width/100f - (float)Image.Width/GraphicsImage.DpiX)/2f; Int32 МиллиметрX = (Int32)Math.Ceiling(InchX / 0,039370); this.Graphics.DrawImage(Image, new Point((int)this.LeftMargin + (MillimeterX / 2), (int)this.YPosition())); двойной a = (double)Image.Height/58,0 * 15,0; this.ImagesHeight += (int)Math.Round(a) + 3; перерыв; } if ((YPosition() * 4) >= e.PageSettings.PrintableArea.Height) { е.HasMorePages = правда; возвращаться; } еще { е.HasMorePages = ложь; } } } YPosition представляет высоту каждой строки или изображения на страницах.

Как предотвратить бесконечный цикл печати и остановить ее, если все объекты обработаны?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»